Activity 启动模式小记

Activity启动模式主要处理 activity在任务栈task的启动方式,以达到在不同场景在任务需求(避免重复创建activity实例,达到复用的效果)。具体场景会在后面提及...

Activity启动模式主要有四种standard / singleTop / singleTask /singleInstance

standard

默认启动模式(不需配置),一个Task中可以存在多个实例

如下图中,Activity Atask中有多个实例

Paste_Image.png

singleTop

栈顶不是该类型的Activity,创建一个新的Activity。否则,通过onNewIntent方法更新Activity。可以有多个实例,但是不允许多个相同Activity叠加。

场景:某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的。

Paste_Image.png

singleTask

只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。

场景:例如浏览器的主界面。不管从多少个应用启动浏览器,只会启动主界面一次,其余情况都会走onNewIntent,并且会清空主界面上面的其他页面。

Paste_Image.png

singleInstance

只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。

场景:例如闹铃提醒,将闹铃提醒与闹铃设置分离。

Paste_Image.png

推荐阅读更多精彩内容