Task和Activity回退栈详解
来源:互联网 发布:软件开发包括哪些 编辑:程序博客网 时间:2024/05/22 11:13
什么是Task?
Task是一个包含activity的列表。或者可以理解为按照启动的先后来排队的一个队列;
什么是回退栈(Back Stack)?
Back Stack是存储一个Task的实现方式,一个容器。它具有栈的特性:后进先出。
Task 、Back Stack 、Acitivity三者之间的关系?
根据activity的启动的顺序,加入A启动了B,那么B默认情况下就放到了
A的Task的Back Stack里面啦。当然,你也可以去修改这一个默认的行为。
如何保存activity属性和状态?
默认情况下,当activity脱离前台进入后台运行的时候,系统会自动保存它的配置信息,当用
户返回到activity的时候,可以自动的复原.
然而当过了比较长的一段时间后或者系统需要回收内存什么的,会清除掉它的配置信息,当
用户返回到该activity的时候会重新的启动该activity.
那么这种情况下如果要把以前做的重新再来一遍,这用户体验想想就觉得不妥啊.那么我
们需要自己去保存和恢复activity的配置信息.then ,how?
实现onSaveInstanceState()方法,把所需的属性信息保存到bundle里.
在onCreate()方法里会有一个Bundle参数,如果不为空的话证明了之前是有一些信
信息是保存在这里的,我们就可以利用里面的信息去恢复用户原本处于的状态,这样子用户的体验是不是就好狠多啦。
如何管理Task?
如开头所说,我们可以修改系统的默认行为(即如果A启动了B,会把B放入A所在的Task和Back Stack里),那么,有两种方式可以做到:
A.在startActivity(Intent intent)的intent中定义flag:
intent.setFlags(flag);
系统会根据intent所定义的flag来对所被启动的activity来指定特定的Task。
B.在Manifest文件中该activity标签下的属性
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
同样系统会根据属性里所定义的值来对被启动的activity进行指定task。
在这两种方式中,有一些效果是flag有而manifest文件没有的,同样也有一些效果
值是manifest文件有而flag所没有的。
当这两个值被同时设置的时候,flag的效果会覆盖launchMode所设置的效果。
- Task和Activity回退栈详解
- Android的Activity和Task详解
- Task与Activity详解
- Task 与 Activity 详解
- Task 与 Activity 详解
- Task(Activity栈) 详解
- Task与Activity详解
- Task与Activity详解
- Activity Task 详解
- Task(Activity栈) 详解
- Activity,Task和task栈
- Task和Activity相关
- Task和Activity相关
- Task 和Activity相关
- Task和Activity相关
- Task和Activity相关
- Task和Activity相关内容
- Task和Activity相关
- Apache Beam处理Kafka数据源源码分析
- Windows 平台搭建 PHP 集成开发环境
- [leetCode刷题笔记]2017.02.13
- HTTP概述
- Unix高级编程-文件和目录
- Task和Activity回退栈详解
- 【object detection】R-cnn论文笔记
- jquery中html、val与text三者属性取值的联系与区别介绍
- c++ 响铃
- XML文件解析
- spring动态创建切换数据源动态之原理
- SVN分支/合并原理及最佳实践
- Linux配置LNMP环境搭建
- java 枚举