Activity|Activity 启动模式
相关定义
- standard。默认使用的模式,无论此 activity 是否已经存在于任务栈中,都会新建这个 activity 的实例。
- singleTask。栈内复用模式。若要启动的 activity 已经存在于任务栈中,则弹出至栈顶且在 activity 之上的 同一栈内的 activity 都会出栈。onNewIntent() 方法会被回调,onStart() 和 onResume() 也会被回调。
文章图片
singleTask 模式的 activity
- singleTop 。栈顶复用模式。若要启动的 activity 处于 它的任务栈的栈顶,则不会创建新的实例。onNewIntent() 会被回调,onStart()、onResume() 方法也会被调用。
文章图片
singleTop 模式的 activity.png
- singleInstance。单实例任务栈模式。此模式下的 activity 单独开启任务栈,这个任务栈只有该 activity 一个实例。后续对 该 activity 的启动都不会创新新的实例,直接复用。onNewIntent() 会被回调(已验证)。
- MainActivity 与 ThirdActivity 使用默认-standard模式,SecondActivity 设置了singleInstance模式,相关任务栈:
文章图片
SecondActivity 设置了 singleInstance .png 可以看到 SecondActivity 处于单独的任务栈中,而 ThirdActivity 处于 与 Main 相同的任务栈中。
- ThirdActivity 跳转至设置了 singleTask 模式的 MainActivity,相关任务栈:
文章图片
MainActivity 设置 singleTask 可以看到 ThirdActivity 直接被弹出任务栈,设置了singleInstance 模式的 SecondActivity 不受影响。
- ThirdActivity 跳转至设置了 singleTop 模式的 MainActivity ,相关任务栈:
文章图片
MainActivity 设置了singleTop.png 【Activity|Activity 启动模式】MainActivity 不处于任务栈的栈顶,从而创建一个新的 MainActivity 的实例。
推荐阅读
- Hive常见问题汇总
- 注册分销商的骄傲
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- 设计模式-代理模式-Proxy
- 如何启动改变
- spring|spring boot项目启动websocket
- Android系统启动之init.rc文件解析过程
- 【译】Rails|【译】Rails 5.0正式发布(Action Cable,API模式等)
- java静态代理模式