面试复习一 Activity启动模式(2)

Activity启动模式

1、设置启动模式

一般地,我们可以直接在AndroidManifest.xml 标签的一个属性中设置launchMode,如下:

<activity
 android:name=".ExampleActivity"
 android:label="singleTask launchMode"/>

2、四种动模式认识

  • standard:标准模式 系统的默认模式,每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。被创建的实例的生命周期符合典型情况下Activity的生命周期,它的onCreate,onStart,onResume都会被调用。这是一种典型的多实例实现,一个任务栈中可以有多个实例,每个实例可以属于不同的任务栈。在这种模式下,谁启动了这个Activity,那么这个Activity就会运行在启动它的那个Activity的任务栈中。
  • singleTop:栈顶复用模式 如果新的Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时它的onNewIntent方法会被回调,通过此方法的参数我们可以取出当前请求的信息。需要注意的是,这个Activity的onCreate,onStart不会被系统调用,因为它没有发生改变。如果新Activity的实例已存在但不是位于栈顶,那么新Activity仍然会被重建。
  • singleTask:栈内复用模式 这是一种单实例模式,在这种模式下,只要Activity在一个栈中存在,那么多次启动Activity都不会重新创建实例,和singleTop一样,系统也会回调其onNewIntent。详细来说,当一个具有singleTask模式的Activity请求启动后,系统首先会寻找是否存在这个Activity想要的任务栈,如果不存在,就重新创建一个任务栈,然后创建这个Activity的实例后放到栈中。如果存在这个Activity所需的任务栈,这时候看栈中是否存在这个Activity的实例,如果有实例存在,那么系统就会把这个Activity调到栈顶并调用它的onNewIntent方法,如果实例不存在,就创建这个Activity的实例并压入栈中。
  • singleInstance:单实例模式 这是一种加强的singleTask模式,如果某个Activity是singleInstance模式,当这个Activity启动以后,系统会为它创建一个新的任务栈,然后Activity独自在这个新的任务栈,由于栈内复用的特性,后续的请求均不会创建新的Activity,除非这个独特的任务栈被系统销毁了。

阅读更多
个人分类: android-面试
上一篇面试复习一 Activity生命周期(1)
下一篇ListView单条item刷新
想对作者说点什么? 我来说一句

Activity启动模式

2012年10月17日 122KB 下载

没有更多推荐了,返回首页

关闭
关闭