Activity启动模式主要处理 activity
在任务栈task
的启动方式,以达到在不同场景在任务需求(避免重复创建activity实例,达到复用的效果)。具体场景会在后面提及...
Activity启动模式主要有四种 : standard
/ singleTop
/ singleTask
/singleInstance
standard
默认启动模式(不需配置),一个Task中可以存在多个实例
如下图中,Activity A在task
中有多个实例
singleTop
栈顶不是该类型的Activity,创建一个新的Activity。否则,通过
onNewIntent
方法更新Activity。可以有多个实例,但是不允许多个相同Activity叠加。
场景:某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的。
singleTask
只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
场景:例如浏览器的主界面。不管从多少个应用启动浏览器,只会启动主界面一次,其余情况都会走onNewIntent,并且会清空主界面上面的其他页面。
singleInstance
只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
场景:例如闹铃提醒,将闹铃提醒与闹铃设置分离。