关于Activity启动模式的理解
2012-10-25 10:26
295 查看
Activity的启动模式一共有四种,它们是:standard、singleTop、singleTask、singleInstance,用于给activity标签中的android.launchMode属性赋值。
这里面有些容易混淆的地方。
在理解上,最需要注意的是:所有这些,都和所谓的“任务”相关,和所谓的“全局”不相关,另外,就是不能望文生义,只是看字面翻译来理解,因为从下面的分析可以看出,不同的“single”有不同的意思。
假设有一种Activity B用于处理某种Intent X,则当一个这种 X 的实例到达时,不同启动模式是以如下的方式影响处理过程的:
standard:缺省启动模式。即每当有 X 的实例需要处理时都创建一个新的 B 实例,与创建者在一个堆栈中,并被放放在堆栈顶部。
singleTop:当需要处理的 X 的实例到达时,如果堆栈顶部是一个 B 的实例,那就不创建新实例来处理,而直接使用堆栈顶部的那个。否则就创建一个新的,剩下的过程就跟standard模式相同了。singleTop 的含义似乎是“用处于堆栈顶部的那个处理”。
singleTask:以这种模式启动的 Activity 一定会放在一个新任务中,所以它一定位于堆栈的最底端,与创建者并不在一个堆栈中。如果它创建了其他Activity,那么其他的Activity将放在别的堆栈中。所以,看起来singleTask的含义似乎是“任务中唯一的Activity实例”。
singleInstance:以这种模式启动的 Activity 一定会放在一个新任务中,所以它一定位于堆栈的最底端,与创建者并不在一个堆栈中,这部分与singleTask模式完全相同。不同的是,如果它创建了其他的Activity实例,那么那些实例将放在它的上方,而不是另一个任务中。当需要处理的 X 的实例到达时,如果此时 B 的实例位于堆栈顶端,则可以处理这个 X 的实例,否则,这个 X 的实例将不处理,而被放弃。singleInstance的含义似乎有“在一个任务中最多创建多一个实例”的含义。当然,因为只能有一个实例,那么如果这个实例没有位于堆栈的顶部,专由它处理的
Intent 就只能被放弃了。
这里面有些容易混淆的地方。
在理解上,最需要注意的是:所有这些,都和所谓的“任务”相关,和所谓的“全局”不相关,另外,就是不能望文生义,只是看字面翻译来理解,因为从下面的分析可以看出,不同的“single”有不同的意思。
假设有一种Activity B用于处理某种Intent X,则当一个这种 X 的实例到达时,不同启动模式是以如下的方式影响处理过程的:
standard:缺省启动模式。即每当有 X 的实例需要处理时都创建一个新的 B 实例,与创建者在一个堆栈中,并被放放在堆栈顶部。
singleTop:当需要处理的 X 的实例到达时,如果堆栈顶部是一个 B 的实例,那就不创建新实例来处理,而直接使用堆栈顶部的那个。否则就创建一个新的,剩下的过程就跟standard模式相同了。singleTop 的含义似乎是“用处于堆栈顶部的那个处理”。
singleTask:以这种模式启动的 Activity 一定会放在一个新任务中,所以它一定位于堆栈的最底端,与创建者并不在一个堆栈中。如果它创建了其他Activity,那么其他的Activity将放在别的堆栈中。所以,看起来singleTask的含义似乎是“任务中唯一的Activity实例”。
singleInstance:以这种模式启动的 Activity 一定会放在一个新任务中,所以它一定位于堆栈的最底端,与创建者并不在一个堆栈中,这部分与singleTask模式完全相同。不同的是,如果它创建了其他的Activity实例,那么那些实例将放在它的上方,而不是另一个任务中。当需要处理的 X 的实例到达时,如果此时 B 的实例位于堆栈顶端,则可以处理这个 X 的实例,否则,这个 X 的实例将不处理,而被放弃。singleInstance的含义似乎有“在一个任务中最多创建多一个实例”的含义。当然,因为只能有一个实例,那么如果这个实例没有位于堆栈的顶部,专由它处理的
Intent 就只能被放弃了。
相关文章推荐
- AndroiManifest.xml之Activity (一、关于activity启动模式、属性及Flag的进一步理解)
- 关于activity的启动模式的理解
- 关于Activity启动模式的理解
- 关于Activity启动模式的基本使用,API使用详解。
- 关于代码实现activity的启动模式
- 对activity的四种启动模式的理解
- 理解Activity启动模式
- 关于Activity启动模式
- 关于activity中启动模式影响数据的显示
- 关于Android之activity的四种启动模式分析
- 关于Activity启动模式(launchMode)和intent设置测试后 发现和网上说的不符 是不是我错了 求解
- 深入理解Activity的启动模式
- 关于android activity启动模式
- 关于Activity的四种启动模式详解
- 关于Activity及启动模式,Fragment,Service的使用以及生命周期
- Android中关于startActivityForResult()在activity不同启动模式下onActivityResult()的回调
- 轻松理解Activity四种启动模式
- 关于Android开发中Activity的启动模式
- 关于ActivityManagerService的学习启动模式 7.23
- 关于Activity的生命周期和启动模式(附Demo)