activity启动模式的理解

203 阅读1分钟

activity 的四种启动模式: standard,singletop,singletask,singleinstance;

task:任务栈,遵循先进后出原则,是用户为了满足一定需求打开的一系列activity,一个APP一般有一个task,也可以自己显示指定多个;

复用:复用是为了节约资源和打造良好的用户体验。除了standard模式,其他三种模式均有一定的复用功能,区别只是复用的范围不同:

singletop复用范围最小,同task的栈顶复用,启动一个singletop的activity,看当前task的栈顶是否是该activity,如果是则调用该activity的newintent,如果不是则新建一个;

singletask复用范围是所有task。即先在同task匹配,如果存在那么显示出来并调用newintent方法,清空其上的activity,如果匹配失败再在其他task匹配,如果存在那么将该task搬入当前task的顶部,并且清空所匹配activity上面的activity,调用newintent方法;

具有singleinstance标记的activity会被放入一个单独的只包含该activity的task中,具有系统级别的复用,启动具有singleinstance标记的activity 会在所有task中寻找,如果匹配则将该activity所在task放在顶部并调用该activity的newintent方法,如果匹配不到则新建一个task新建一个目标activity放入该栈中。

应用场景:singletop一般多用于显示新闻类页面; singletask一般用于一个APP首页,结合action.main和category.launcher一起使用;singleinstance一般用于独立页面,如接听拨打电话页面,闹钟页面。