Android基础之LaunchMode
2016-07-13 00:07
483 查看
四种启动模式以及应用场景
学习Android很久了,平时开发很少涉及到Activity的启动模式,对其概念变得模糊起来,今天就来重温一下LaunchMode.Standard
标准启动模式,是Activity默认的启动方式,只要startAcitity就会创建一个实例,依次放入栈中,先进后出,如下图:
图有点难看,大家明白意思就行。
应用场景:
默认普通的应用场景
SingleTop
判断栈顶是否存在该Activity实例,如果栈顶存在就复用该实例,栈顶不存在该实例就和Standard一样,如图:
应用场景:
当外界多次跳转到一个页面时,可以使用SingleTop,比如:
消息推送时,一下推了10条,每次都打开一个页面很累的,可以使用SingleTop。
SingleTask
单任务模式,如果没有创建过该实例,就新建实例,放到栈顶,如果有该实例就复用,同时清除掉该到栈顶的所有实例,从而保证在栈中,一个Activity只有一个实例,如图:
应用场景:
栈中只有一个实例,适合作为程序的入口点,如:任何应用打开浏览器,只会启动主界面一次。
SingleInstance
一个栈保证只有一个实例,不同类型的实例压入不同的任务栈,如图:
应用场景:
某个应用中用到了google地图,当退出该应用的时候,进入google地图,还是之前的界面 。
———————————————————————
实际应用
之前一直没有遇到过有关启动模式的问题,今天在系统分享的时候,在聊天室界面的LauncMode就产生了冲突:我做的是系统分享,将消息分享给好友,并在聊天界面ChatRoom显示消息列表,自己可以在短信/浏览器/其他应用分享消息给好友,所以作为程序的入口点,只启动一次是比较合理的(在点击menu时,只有一个实例),因此LauncMode为SingleTask。
另外哥们做消息记录,点击记录进入聊天室,然后点击back键需要返回搜索记录页面,因此LauncMode为SingleTop更合适。
这样我们设置的启动模式就发生了冲突,经过协商,最后我们参照了微信的办法,root过的手机,通过adb shell我们发现常规聊天室和B聊天室不是一个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