四大组件之Activity Task任务栈4种启动模式
1、启动模式
- standard,创建一个新的Activity。
- singleTop,栈顶不是该类型的Activity,创建一个新的Activity。否则,onNewIntent。
- singleTask,回退栈中没有该类型的Activity,创建Activity,否则,onNewIntent+ClearTop。
- singleInstance,回退栈中,只有这一个Activity,调用时反复置于栈顶,没有其他Activity。
2、实例化
- standard、singleTop可被多次实例化,且存在再不同的task中,一个task可包括一个activity的多个实例
- singleTask、singleInstance则只能被实例化一次
3、使用场景:
3.1 singleTop适合接收通知启动的内容显示页面。
某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的。
关于singleTop另一个典型的使用场景就是搜索功能。假设有一个搜索框,每次搜索查询都会将我们引导至SearchActivity查看结果,为了更好的交互体验,我们在结果页顶部也放置这样的搜索框。
假设一下,SearchActivity启动模式为standard,那么每一个搜索都会创建一个新的SearchActivity实例,10次查询就是10个Activity。当我们想要退回到非SearchActivity,我们需要按返回键10次,这显然太不合理了。
但是如果我们使用singleTop的话,如果SearchActivity在栈顶,当有了新的查询时,不再重新创建SearchAc实例,而是使用当前的SearchActivity来更新结果。当我们需要返回到非SearchActivity只需要按一次返回键即可。使用了singleTop显然比之前要合理。
3.2 singleTask适合作为程序入口点。
淘宝搜索页面,不管从什么页面进入搜索页面,只会onNewIntent搜索页面一次,并且会清空搜索界面上面的其他页面。
该模式的使用场景多见于邮件客户端的收件箱或者社交应用的时间线Activity。这两种场景需要对应的Activity只保持一个实例即可,但是也要谨慎使用这种模式,因为它可以在用户未感知的情况下销毁掉其他Activity。
3.3 singleInstance适合需要与程序分离开的页面。
闹铃提醒,将闹铃提醒与闹铃设置分离。
singleInstance不要用于中间页面,如果用于中间页面跳转会有问题,比如:A -> B (singleInstance) -> C,完全退出后,在此启动,首先打开的是B。
http://www.tuicool.com/articles/iIf6BbV
最新文章
- JavaScript 命名规则
- Android基础知识总结
- 管理系统UI: System Bar 详解
- Java NIO示例:多人网络聊天室
- WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册
- 为什么你要拒绝我 ——苹果AppStore被拒理由大全
- 从xml文件中读取注释
- 山东理工大学ACM平台题答案关于C语言 1137 C/C++经典程序训练7---求某个范围内的所有素数
- Git关联远程GitHub仓库
- 内联函数 inline
- struts ajax多级下拉菜单
- FastDFS单机版安装
- vue列表拖拽组件 vue-dragging
- ClassLoader的工作机制
- 初入TensorFlow————配置TensorFlow
- 获取指定tag的代码
- EOJ Monthly 2018.11 D. 猜价格
- eclipse中html编辑环境的搭建
- spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置
- 20145206邹京儒Exp6 信息搜集与漏洞扫描