Android 启动模式和启动标志的关系以及各种适应的使用场合
2016-02-18 20:30
513 查看
转载请注明出处:http://blog.csdn.net/onlybeyond99/article/details/50688344 挨踢人one
一、设置方式
1、通过在配置文件中设置Activity的launchMode熟悉设置启动模式
2、在StartActivity()之前对Intent设置启动标志
二、启动模式
1、standard:标准模式,这也是系统的默认模式。每次启动一个Activity都会重新创建一个新的实例。
2、singleTop:栈顶复用模式。在这种模式下,如果新Activity已经在任务栈中存在了并且位于任务栈的栈顶,那么新Activity不会被重新创建。
运用场景:后台service不停的加载数据,然后用startactivity更新数据,
3、singleTask:栈内复用模式。
两种情况:当Activity设置TaskAffinity并且与原来不一样时会新开一个栈,将其放入栈地
没有设置时会加入当前的栈,如果之前的栈已经含有启动的Activity,则activity之上的其他Activity都会被移除
适用场景:注册包含多个页面,从比较深的页面之间回到首页导航
启动的Activity变为栈顶
4、singleInstance:系统会为他单独创建一个任务栈将其压入,如果再次启动他,他已经存在了,那么就直接复
用该任务栈。单独占用一个任务栈
适用场景:一些特别消耗资源的Activity,比如包含地图的Activity
三、启动标志
1.FLAG_ACTIVITY_SINGLE_TOP
与launchMode="singleTop"具有相同的行为
2.FLAG_ACTIVITY_NEW_TASK
单独用通常没效果,需要与FLAG_ACTIVITY_CLEAR_TASK或FLAG_ACTIVITY_CLEAR_TOP联合使用。
与FLAG_ACTIVITY_CLEAR_TASK一起使用能够能够清除之前的Activity
与FLAG_ACTIVITY_CLEAR_TOP时需要把TaskAffinity设置的和之前不一样。这时的效果类似于singleTask不同TaskAffinity的效果
四、关系与比较
两种都能对Acitity的启动模式进行设置,且有很多模式两种都能实现。(singleInstance只能第一种实现)
但个人感觉启动标志会更灵活一些。因为很多的 Activity使用的多次,而且需求不一定一样。这时通过启动标志来控制回方便很多
独学而无友,则孤陋而寡闻!分享知识,交流技术,碰撞思想!
一、设置方式
1、通过在配置文件中设置Activity的launchMode熟悉设置启动模式
2、在StartActivity()之前对Intent设置启动标志
二、启动模式
1、standard:标准模式,这也是系统的默认模式。每次启动一个Activity都会重新创建一个新的实例。
2、singleTop:栈顶复用模式。在这种模式下,如果新Activity已经在任务栈中存在了并且位于任务栈的栈顶,那么新Activity不会被重新创建。
运用场景:后台service不停的加载数据,然后用startactivity更新数据,
3、singleTask:栈内复用模式。
两种情况:当Activity设置TaskAffinity并且与原来不一样时会新开一个栈,将其放入栈地
没有设置时会加入当前的栈,如果之前的栈已经含有启动的Activity,则activity之上的其他Activity都会被移除
适用场景:注册包含多个页面,从比较深的页面之间回到首页导航
启动的Activity变为栈顶
4、singleInstance:系统会为他单独创建一个任务栈将其压入,如果再次启动他,他已经存在了,那么就直接复
用该任务栈。单独占用一个任务栈
适用场景:一些特别消耗资源的Activity,比如包含地图的Activity
三、启动标志
1.FLAG_ACTIVITY_SINGLE_TOP
与launchMode="singleTop"具有相同的行为
2.FLAG_ACTIVITY_NEW_TASK
单独用通常没效果,需要与FLAG_ACTIVITY_CLEAR_TASK或FLAG_ACTIVITY_CLEAR_TOP联合使用。
与FLAG_ACTIVITY_CLEAR_TASK一起使用能够能够清除之前的Activity
与FLAG_ACTIVITY_CLEAR_TOP时需要把TaskAffinity设置的和之前不一样。这时的效果类似于singleTask不同TaskAffinity的效果
四、关系与比较
两种都能对Acitity的启动模式进行设置,且有很多模式两种都能实现。(singleInstance只能第一种实现)
但个人感觉启动标志会更灵活一些。因为很多的 Activity使用的多次,而且需求不一定一样。这时通过启动标志来控制回方便很多
独学而无友,则孤陋而寡闻!分享知识,交流技术,碰撞思想!
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories