Android activity加载模式

栈是什么?

任务栈Task,是用来放置activity的地方,即执行特定任务时与用户交互的一系列activity,这些activity的顺序采取“先进后出”的顺序排列在堆栈中。作用:为了记录用户开启的那些activity,方便用户进行对activity的管理,帮助更好的维护用户体验

activity的启动模式?

即activity启动时的策略,当新启动一个activity时,它会置于栈顶,并处于活动状态,在AndroidManifest.xml中的标签的android:launchMode属性设置,一共有4种启动模式,分别为standard、singleTop、singleTask、singleInstance

standard

默认模式,不需要在AndroidManifest.xml里面配置,每次打开新的Intent时,都会创建新的实例,试用于绝大部分情况,因此,允许有多个相同实例存在,当startActivity(new Intent(A.this, A.class)),这时任务栈会有两个相同的A实例

singleTop

栈顶复用模式,这种其实和默认standard大致一样,只不过当你启动的activity处于栈顶的时候,那么不会生成新的实例,将调用 onNewIntent() 方法,避免栈顶的activity被重复的创建,解决用户体验问题

singleTask

单一任务模式,activity只会在任务栈里面存在一个实例。如果要激活的activity,在任务栈里面已经存在,就不会创建新activity,而是复用这个已经存在的activity,调用 onNewIntent() 方法,并且清空当前activity任务栈上面所有的activity,整个任务栈只有一个实例,节约内存和cpu

singleInstance

单态单例模式,单一实例,整个手机操作系统里面只有一个实例存在。不同的应用去打开这个activity共享 公用的同一个activity。
他会运行在自己单独,独立的任务栈里面,并且任务栈里面只有他一个实例存在。
应用场景:呼叫来电界面 InCallScreen

引用
http://blog.csdn.net/self_study/article/details/48055011

你可能感兴趣的:(Android activity加载模式)