美文网首页
用 singleTask 启动模式实现退出应用功能

用 singleTask 启动模式实现退出应用功能

作者: 栩檬 | 来源:发表于2021-04-12 16:59 被阅读0次

问题

场景:ActivityA 启动 ActivityB,ActivityB 启动 ActivityC,ActivityC 启动 ActivityA,如何实现在 ActivityA 中点击返回键退出应用的功能?


如何实现退出功能.png

回答

将 ActivityA 的启动模式设置为 singleTask。
代码示例: AndroidManifest.xml文件

<application ...>
    ...
    <activity android:name="ActivityA" android:launchMode="singleTask"/>
    ...
</application>

解释

Activity 的 singleTask 启动模式

standard:标准模式,为系统默认模式。每次启动一个 Activity 都会创建一个新的 Activity 实例。


启动 ActivityA:标准模式

singleTask:栈内复用模式。如果 Activity 的实例在栈中存在,启动时不再创建新的实例,而会将其调到栈顶并回调其 onNewIntent() 方法。


启动 ActivityA:栈内复用模式.png

功能实现的原理

  1. 当我们依次启动多个 Activity 时,系统会创建他们的实例并把它们按顺序放入任务栈中。


    依次启动多个 Activity.png

    此时,每按一次返回键,就会有一个 Activity 出栈。当最后一个 Activity 出栈后,应用就自动退出了。


    最后一个 Activity 出栈后,应用退出.png
  2. 当 ActivityA 的启动模式设置为 singleTask 时,ActivityA 的启动会导致在它上面的所有 Activity 出栈。
    如果 ActivityA 位于栈底,那么再次启动 ActivityA 后,栈中就只剩下这一个 Activity 了。此时,点击返回键,会导致 ActivityA 出栈,应用退出。


    再次启动 ActivityA 后点击返回键.png

测试设备参数

操作系统:MIUI 12.0.4 稳定版 (Android 10)

参考资料

任玉刚.Android 开发艺术探索[M].电子工业出版社:北京,2015:16-17.

测试代码

https://github.com/XuMeng-0/android-study

相关文章

网友评论

      本文标题:用 singleTask 启动模式实现退出应用功能

      本文链接:https://www.haomeiwen.com/subject/aztclltx.html