android 四种启动模式
2017-12-11 12:26
246 查看
android 四种启动模式 记录一下
android 四种启动模式:standard
singleTop
singleTask
singleInstance
为activity设置启动模式,防止创建大量重复的activity
设置方法
在AndroidManifest.xml中为对应的activity标签设置android:launchMode属性模式解释
standard这种是默认启动模式,在这种模式下,会重复创建相同的activity
一个activity A
无论A是否已经存在,创建A时,都会新建A
例如A中一个按钮,可以跳转到A,
每点击一次都会新建一个A在栈顶
singleTop
在这种模式下,不允许activity叠加,但是可以有重复
两个activity A B ,两个activity中都有按钮可以跳转到A B
若A在栈顶,点击按钮跳转到A ,这时不会新建A 二是调用A的onNewIntent
点击跳转到B,会新建一个B
若A,B已存在,B在栈顶,点击按钮跳转到A,这时会新建A
也就是说此时有两个A的实例存在
用他人博客的例子:
操作:A -> B -> B
实际:A -> B (第二次跳转B,因为B在栈顶所以不会新建B而是调用B的onNewIntent方法)
操作:A -> B -> A -> B
实际:A -> B -> A -> B
singleTask
这种模式下只有一个实例,若在同一个应用中启动ta,且其Activity不存在,会在同一个task下新建一个,其Activity已存在,在activity栈中,会将其之上的activity销毁并调用他的onNewIntent方法
用他人博客的例子:
三个activity A B C,其中都有按钮可以跳转到A B C
操作:A -> B -> C
实际:A -> B -> C -> B
操作:A -> B -> C -> B
实际:A -> B (最后一次跳转B时,将C销毁同时调用B的onNewIntent方法)
singleInstance
只会有一个实例,这个实例在一个task中,且这个task中不会有其他activity
他人博客例子:
两个activity A B ,B为singleInstance模式
操作:A -> B
实际:A (假设task的ID为0) -> B (新建一个task,ID为1)
操作:其他应用 -> B -> A
实际:其他应用(假设task的ID为0) -> B (新建一个task,ID为1)-> A(新建一个task,ID为2)
自己遇到的相关问题
在写一个App的时候发现,每次App转到后台在回到前台都会刷新在栈顶的activity,后来才发现启动模式是默认的standard模式,每次都会新建一个activity,后来根据需求改成singleTask模式就OK了最后
写这个博客是为了加深自己对启动模式的理解和记忆,文中有借鉴他人的博客也加上了一些自己遇到的问题,在此记录一下他人博客:http://blog.csdn.net/shinay/article/details/7898492/
相关文章推荐
- Android的四种启动模式
- Android四种启动模式
- Android中Activity四种启动模式和taskAffinity属性详解
- Android中Activity四种启动模式和taskAffinity属性详解
- 浅谈Android四种启动模式及应用场景--standrad、singleTop、singleTask、singleInstance
- android launchmode(四种启动模式)应用场景及实例
- Android基础——Activity的四种启动模式
- Android Activity 的四种启动模式
- Android中的Activity四种启动模式(launchMode)
- Android入门:Activity四种启动模式
- android四种启动模式注意点
- Androidx学习笔记(52)--- Activity的四种启动模式
- android launchmode(四种启动模式)应用场景及实例
- android launchmode(四种启动模式)应用场景及实例
- Activity的四种启动模式--看Android开发艺术探索总结
- Android的Activity生命周期以及四种启动模式
- Android四种启动模式
- Android中Activity四种启动模式(LaunchMode)和taskAffinity属性
- Android之Activity的四种启动模式
- Android之Activity的四种启动模式