罗敬威的博客

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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),所以总是能够适当的处理行为

  

posted on 2015-09-16 18:15  luojinwei  阅读(162)  评论(0编辑  收藏  举报