1、一个应用程序一般都是由多个activity组成的,任务栈(task stack),记录和存放用户开启的activity。
2、当一个应用程序被打开时,系统就会给他分配拟一个任务栈,当任务栈中所有的activity都退出的时候,任务栈就清空了。任务栈中的id是一个integer的数据类型(自增长的)。
3、在android操作系统里面会存在多个任务栈,一个应用程序对应一个任务栈。
4、默认情况下,关闭掉一个应用程序,系统就会清空了这个应用程序。但是应用程序的进程还会被保留
为什么要引入任务栈的概念?
为了记录用户开启了哪些activity,记录这些activity开启的先后顺序,Google引入任务栈(task stack)的概念,为了拥有更好的用户体验。
activity的启动模式中可以指定任务栈的模式:
在AndroidManifest.xml中对指订activity进行配置:
<activity android:name=".MainActivity" android:launchMode="singleInstance">
四种启动模式:
1、standard 默认标准的启动模式,每次startActivity都是创建一个新的activity实例
2、singleTop 单一顶部模式,如果要开启的activity在任务栈的顶部已经存在,就不会创建新的实例,而是直接使用这个顶部实例
3、singleTask 单一任务栈,如果在栈中已经有该activity的实例,就重用该实例,会调用实例的onNewIntent()。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果当中不存在该实例,将会创建新的实例放入栈中。注意:singleTask模式的Activity不管是位于栈顶还是栈底,再次运行这个Activity时,都会destory掉它上面的Activity来保证整个栈中只有一个自己,切记切记”这点是毋庸置疑的。
4、singleInstance 单态 单例模式 单一实例,整个手机操作系统里面只有一个实例存在,activity总是在栈的顶端(因为他是任务中唯一的一个activity),所以总是能够适当的处理行为
2015-09-16 18:15 luojinwei