standard
缺省模式
singleTop
single on Top, 如果在栈顶就不新创建了
如新创建一个activity D为例
- 不管栈中有没有D,栈顶没有D就新创建一个D
- 如果栈中有D, 就调用该D的onNewIntent() , 不再新创建
一个stack可能有该activity的多个实例(该activity在栈顶后又有别的activity进栈)
singleTop适合接收通知启动的内容显示页面。
例如,某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的,用户在点击返回按键的时候也会导致视觉差异。
- 登录页面、WXPayEntryActivity、WXEntryActivity 、推送通知栏
singleTask
single in task
回退栈中没有该类型的Activity,创建Activity,否则,onNewIntent+ClearTop。
- 启动的时候,会先在系统中查找属性值affinity等于它的属性值taskAffinity的Task存在
- 注意会ClearTop
他的上面可以有其他的Activity。这点与singleInstance是有区别的。
singleTask适合作为程序入口点。
例如浏览器的主界面。不管从多少个应用启动浏览器,只会启动主界面一次,其余情况都会走onNewIntent,并且会清空主界面上面的其他页面。
- WebView页面、扫一扫页面、电商中:购物界面,确认订单界面,付款界面
singleInstance
singleInstance,回退栈中,只有这一个Activity,没有其他Activity。
singleInstance应用场景:
- 闹铃的响铃界面。返回就是用户上一个应用的界面,而不是闹钟的task 栈的activity
- 此启动模式和我们使用的浏览器工作原理类似,我们都知道在多个程序中访问浏览器时,如果当前浏览器没有打开,则打开浏览器,否则会在当前打开的浏览器中访问
- 系统Launcher、锁屏键、来电显示等系统应用