Activity、Task、Back Stack的概念----Activity的管理
来源:互联网 发布:算法神探 epub 编辑:程序博客网 时间:2024/05/21 23:51
Stack(栈):后进先出(LIFO),常用操作入栈(push),出栈(pop),处于最顶部的叫栈顶,最底部叫栈底。
Activity、Task、Back Stack:
Task是Activity的集合,是一个概念,实际使用的Back Stack来存储Activity,可以有多个Task,但是 同一时刻只有一个栈在最前面,其他的都在后台!那栈是如何产生的呢?
答:当我们通过主屏幕,点击图标打开一个新的App,此时会创建一个新的Task!举个例子:
我们通过点击通信录APP的图标打开APP,这个时候会新建一个栈1,然后开始把新产生的Activity添加进来,可能我们在通讯录的APP中打开了短信APP的页面,但是此时不会新建一个栈,而是继续添加到栈1中,这是 Android推崇一种用户体验方式,即不同应用程序之间的切换能使用户感觉就像是同一个应用程序, 很连贯的用户体验,官方称其为seamless (无缝衔接)! ——————这个时候假如我们点击Home键,回到主屏幕,此时栈1进入后台,我们可能有下述两种操作:
1)点击菜单键(正方形那个按钮),点击打开刚刚的程序,然后栈1又回到前台了! 又或者我们点击主屏幕上通信录的图标,打开APP,此时也不会创建新的栈,栈1回到前台!
2)如果此时我们点击另一个图标打开一个新的APP,那么此时则会创建一个新的栈2,栈2就会到前台, 而栈1继续呆在后台;
3) 后面也是这样…以此类推!
< activity >中我们可以使用的属性如下:
- taskAffinity
- launchMode
- allowTaskReparenting
- clearTaskOnLaunch
- alwaysRetainTaskState
- finishOnTaskLaunch
taskAffinity:默认情况下,一个应用程序中的所有activity都有一个Affinity,这让它们属于同一个Task。 你可以理解为是否处于同一个Task的标志,然而,每个Activity可以通过 < activity>中的taskAffinity属性设置单独的Affinity。 不同应用程序中的Activity可以共享同一个Affinity,同一个应用程序中的不同Activity 也可以设置成不同的Affinity。
launchMode:standard,singleTop,singleTask,singleInstance
(当用户长时间离开Task(当前task被转移到后台)时,系统会清除task中栈底Activity外的所有Activity 。这样,当用户返回到Task时,只留下那个task最初始的Activity了。我们可以通过修改下面这些属性来 改变这种行为!)
alwaysRetainTaskState: 如果栈底Activity的这个属性被设置为true,上述的情况就不会发生。 Task中的所有activity将被长时间保存。
clearTaskOnLaunch: 如果栈底activity的这个属性被设置为true,一旦用户离开Task, 则 Task栈中的Activity将被清空到只剩下栈底activity。这种情况刚好与 alwaysRetainTaskState相反。即使用户只是短暂地离开,task也会返回到初始状态 (只剩下栈底acitivty)。
finishOnTaskLaunch: 与clearTaskOnLaunch相似,但它只对单独的activity操 作,而不是整个Task。它可以结束任何Activity,包括栈底的Activity。 当它设置为true时,当前的Activity只在当前会话期间作为Task的一部分存在, 当用户退出Activity再返回时,它将不存在。
- Activity、Task、Back Stack的概念----Activity的管理
- Task、Back stack、taskAffinity、Activity启动模式之间的关系
- 查看Task的Activity stack
- Task and Back Activity 管理
- Activity Stack ,Application和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack和Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- android中task概念和与back stack的联系
- 简述Application,Activity,Activity Stack,Task之间的关系
- 【Activity&Task&Stack】Android 中 Activity,Task,Stack 以及 Launch Mode 的一些说明
- Andrid基础知识复习之Activity Task/Back Stack
- Back Stack与Activity
- Array.prototype
- spring注解详细解释
- mysql Connector C/C++ 多线程封装
- 用Kotlin来开发Android程序(入门篇)
- BAT大公司里怎样开发和部署web前端代码
- Activity、Task、Back Stack的概念----Activity的管理
- 计算0到N中包含数字1的个数(整合)
- WEB演变史
- webpack2-webpack.config.js配置
- HLSL/GLSL/Cg
- View事件分发源码详解
- 启发算法,元启发算法的优势?
- redis-利用setbit实现活跃用户统计
- C++第二次实验-项目3