分分钟搞定LaunchMode
2015-06-02 11:07
253 查看
Android有四种Activity的LaunchMode分别为standard、singleTop、singleInstance、singleTask,大概的应用场景如下:
1、standard,默认的启动模式
2、singleTop,适用于从通知栏进入的界面,比如推送,使用singleTop启动的界面当当前activity位于栈顶的时候系统就不会调用onCreate方法新建activity,而是走栈顶activity的onNewIntent方法,自己也可以startActivity的时候从本activity跳转到本activity,看看走的是不是onNewIntent方法
3、singleTask方法,适用于程序的入口,比如浏览器的主页面,只启动主页面一次,其他调用onNewIntent方法。举个栗子:有三个界面,oneActivity、twoActivity、ThreeActivity,其中ThreeActivity的启动模式设置为singleTask,我们这么调转oneActivity----->twoActivity------->ThreeActivity------->oneActivity-------->twoActivity--------->ThreeActivity,你会发现,第二次调转到ThreeActivity的时候不会走ThreeActivity的oncreate方法,而是走onNewIntent方法,并且在新栈中位于第一个ThreeActivity上的oneActivity和twoActivity都会被销毁
4、singleInstance方法,适用于与程序分离的界面,比如闹钟,与singleTask类似,区别在于singleTask允许其他activity进驻到新栈中而singleInstance不允许其他activity进驻到新栈中,新栈中只允许有一个activity
PS:启动activity时还有个比较常用的FLAG是FLAG_ACTIVITY_CLEAR_TOP,这个会清除栈中位于这个activity上的其他activity,这个会重新走activity的onCreate方法,注意不要与singleTop混淆
1、standard,默认的启动模式
2、singleTop,适用于从通知栏进入的界面,比如推送,使用singleTop启动的界面当当前activity位于栈顶的时候系统就不会调用onCreate方法新建activity,而是走栈顶activity的onNewIntent方法,自己也可以startActivity的时候从本activity跳转到本activity,看看走的是不是onNewIntent方法
3、singleTask方法,适用于程序的入口,比如浏览器的主页面,只启动主页面一次,其他调用onNewIntent方法。举个栗子:有三个界面,oneActivity、twoActivity、ThreeActivity,其中ThreeActivity的启动模式设置为singleTask,我们这么调转oneActivity----->twoActivity------->ThreeActivity------->oneActivity-------->twoActivity--------->ThreeActivity,你会发现,第二次调转到ThreeActivity的时候不会走ThreeActivity的oncreate方法,而是走onNewIntent方法,并且在新栈中位于第一个ThreeActivity上的oneActivity和twoActivity都会被销毁
4、singleInstance方法,适用于与程序分离的界面,比如闹钟,与singleTask类似,区别在于singleTask允许其他activity进驻到新栈中而singleInstance不允许其他activity进驻到新栈中,新栈中只允许有一个activity
PS:启动activity时还有个比较常用的FLAG是FLAG_ACTIVITY_CLEAR_TOP,这个会清除栈中位于这个activity上的其他activity,这个会重新走activity的onCreate方法,注意不要与singleTop混淆
相关文章推荐
- Contains Duplicate
- GemFire
- 编程之美面试题12
- mysql四:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- Raspberry Pi2 Model B下Tl-WN725N v2.0无线网卡驱动
- git rebase和git merge
- 专家检索
- gdb
- [经典]浅析Linux IO技术体系
- Tiny示例:对整个目录中的POM树进行批量处理
- AspNet MVC4 教学-22:Asp.Net MVC4 Partial View 技术快速应用Demo
- javascript深入理解js闭包
- 开源协议
- solr特点三: 排序样例汇总
- 【转】【Taven.李锡远】敏捷开发之Scrum扫盲篇
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- CentOS 6.4中升级编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 以及Kdump配置
- 九度OJ-题目1385:重建二叉树
- AndroidManifest.xml文件详解(service)
- 常用GDI函数(2):绘制文本