活动的四种启动模式
2015-11-07 20:34
323 查看
总共四种启动模式:
standard
singleTop
singleTask
singleInstance
修改活动的启动模式,通过xml活动中的”android:launchMode”修改,Android通过返回栈来管理活动。
比如说在MainActivity中打开自己两次,就会出现这种情况
返回的话需要返回两次才能关闭程序。
此模式避免了上面一直创建同一个活动的情况,但是由于它只是检测栈顶的活动是否存在,所以如果两个或者更多活动循环启动的话,每次启动还是会新建一个实例
例如从活动一种打开活动二,再从活动二中打开活动一。
例如:活动一打开活动二,然后活动二打开活动三,给活动二定义为singleInstance模式。此时点后退的话会从活动三的界面退到活动一的界面,然后再点back回到活动二。因为活动一和活动三是放在同一个返回栈中的,当活动三界面点击back键,活动三出栈,活动一就成了栈顶显示在界面上。然后在活动一种点击back,活动一从默认返回栈中出栈,此时默认活动栈为空,于是就显示另一个返回栈的活动,即活动二。再次按下back键,所有返回栈为空,即退出程序
standard
singleTop
singleTask
singleInstance
修改活动的启动模式,通过xml活动中的”android:launchMode”修改,Android通过返回栈来管理活动。
<activity android:name=".MainActivity" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
standard
standard模式(默认模式),即每打开一个新的活动,该活动就会在返回栈中入栈,并处于栈顶位置,此模式下系统不会在乎返回栈中是否已经存在该活动,每次启动都会创建一个新的实例比如说在MainActivity中打开自己两次,就会出现这种情况
返回的话需要返回两次才能关闭程序。
singleTop
singleTop模式:在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用,不在创建新实例。此模式避免了上面一直创建同一个活动的情况,但是由于它只是检测栈顶的活动是否存在,所以如果两个或者更多活动循环启动的话,每次启动还是会新建一个实例
singleTask
singleTask可以很好的解决重复创建栈顶活动的问题。在启动一个活动时,判断返回栈中是否存在该活动的实例,如果存在该活动的实例,则将该实例之上的活动全部退出(destory),然后使该实例成为栈顶活动。如果不存在实例,则启动该活动。例如从活动一种打开活动二,再从活动二中打开活动一。
singleInstance
singleInstance模式:给定义为该启动模式的singleInstance开启一个新的返回栈。。。例如:活动一打开活动二,然后活动二打开活动三,给活动二定义为singleInstance模式。此时点后退的话会从活动三的界面退到活动一的界面,然后再点back回到活动二。因为活动一和活动三是放在同一个返回栈中的,当活动三界面点击back键,活动三出栈,活动一就成了栈顶显示在界面上。然后在活动一种点击back,活动一从默认返回栈中出栈,此时默认活动栈为空,于是就显示另一个返回栈的活动,即活动二。再次按下back键,所有返回栈为空,即退出程序
相关文章推荐
- 传递给Appium服务器以开启相应安卓Automation会话的Capabilities的几点说明【转】
- (转)java判断string变量是否是数字的六种方法小结
- Android组件之间的通信
- UML 总结
- 互联网+O2O 的商业模式
- java连接mongod抛java.net.SocketTimeoutException: connect timed out异常(2015-11-07 20:29:58)
- Introduction-to-React-JS
- 多操作符的语义判断(如 int& *a和int* &a)
- 自己做灭火机器人(一)——硬件准备与车体搭建
- 不借用临时变量交换两个整数的值
- Spark 入门之一:CentOS 6.5 下Spark 1.4 的安装以及配置
- 网站如何记录访客的个人信息?
- lesson18 Aliasing
- 关于文件上传的学习心得
- 最优化方法—一维搜索
- 应用层(一)
- Java多线程的实现方法
- [ecshop 调试 ]ecshop中的 debug_mode 是在哪里定义的 查看sql日志 输出错误 显示debug
- c++ 学习的资源汇总
- Html+Css__HTML元素的ID和Name属性的区别