android任务栈

简介: 1.启动任务栈    第一种,动作设置为“android.intent.action.MAIN”,类别设置为“android.intent.category.LAUNCHER”, 可以使这个ACT(activity)实例称为一个任务栈的入口,拥有这种类型的intent-filter的ACT类型的图 表和名字也会显示在application launcher中。     第二种,即是采

1.启动任务栈
    第一种,动作设置为“android.intent.action.MAIN”,类别设置为“android.intent.category.LAUNCHER”,
可以使这个ACT(activity)实例称为一个任务栈的入口,拥有这种类型的intent-filter的ACT类型的图
表和名字也会显示在application launcher中。
    第二种,即是采用用“singleInstance”模式,另外开个一个唯一ACT的栈,

提示:如果“singleInstance”模式同时还加上上面的类型,则当前ACT也是一个单独ACT的任务栈,而应用其他ACT会组成另外一个任务栈

 

2.启动模式
<activity>标签的launchMode属性可以设置为四种不同的模式:
“standard”   :(默认模式)反复创建新实例,如A-B-A-C-D-B-A…依次随便加
“singleTop” : 避免出现类似A-B-C-D-D…,如D采用"singleTop",则是A-B-C-D 
“singleTask”:    如A采用"singleTask",则在“standard”中类似A-B-C-D-A任务栈,在“singleTask”只会剩下A,BCD都会被回收
“singleInstance” :  此模式你另外开个一个任务栈,且单独只有一个ACT

 

3.清理任务栈
默认:如果一个任务栈在很长的一段时间都被用户保持在后台的,那么系统就会将这个任务栈中除了根ACT以外的
其它所有ACT全部清除掉。当用户再将任务栈切换到前台,则只能显示根activity了。
    1)alwaysRetainTaskState属性
    如果将根ACT的alwaysRetainTaskState属性设置为“true”,则即便一个任务栈在很长的一段时间都被用户
保持在后台的,系统也不会对这个任务栈进行清理。
    2)clearTaskOnLaunch属性
    如果将根ACT的clearTaskOnLaunch属性设置为“true”,那么只有这个任务栈切换到了后台,那么系统就会
将这个任务栈中除了根ACT以外的其它所有ACT全部清除掉。即和alwaysRetainTaskState的行为完全相反。
    3) finishOnTaskLaunch属性
    这个属性的行为类似于clearTaskOnLaunch,但是此属性作用于单个的ACT对象,而不是整个任务栈。当这个
任务栈切换到了后台,这个属性可以使任务栈清理包括根ACT在内的任何ACT对象。 

 

4.还复杂点可以加入亲属关系taskAffinity


总结:简单的说,即是开一个(或几个)任务栈,在每个任务栈上添加ACT,遇到“singleTask”的则回到之前存在的ACT,把夹在中间的ACT全部回收

目录
相关文章
|
7月前
|
Shell Android开发 容器
你真了解Android任务栈 Task 与启动模式吗?
你真了解Android任务栈 Task 与启动模式吗?
61 0
|
存储 编译器 Android开发
Android栈回溯这一篇就够了
## 背景 在日常编码中,经常会遇到需要栈回溯的场景,比如异常上报,动态 Hook(判断来自哪个函数)等等。那么在 Android 中怎么进行栈回溯呢,最近研究了一下这个问题。 理论上像栈回溯这种通用场景,应该有系统函数可以实现,那么系统函数又有什么问题呢,为什么有这篇踩坑文,接下来一一讲解。 ## 栈回溯的理论基础 写一个简单的函数调用如下。 ```objectivec void func
3814 1
|
Android开发
【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task(一)
【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task(一)
850 0
【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task(一)
|
存储 消息中间件 缓存
Android高级:内部类的理解,多态,run和start,wait和seelp,线程安全,堆和栈,synchronized 和volatile ,AsyncT
Android高级:内部类的理解,多态,run和start,wait和seelp,线程安全,堆和栈,synchronized 和volatile ,AsyncT
120 0
|
Java Android开发 iOS开发
Android可见APP的不可见任务栈(TaskRecord)销毁分析
Android可见APP的不可见任务栈(TaskRecord)销毁分析
312 0
Android可见APP的不可见任务栈(TaskRecord)销毁分析
|
存储 测试技术 Android开发
Android 复习笔记 —— 任务栈和返回栈
Android 复习笔记 —— 任务栈和返回栈
Android 复习笔记 —— 任务栈和返回栈
|
存储 前端开发 Android开发
【Android 逆向】Android 进程注入工具开发 ( EIP 寄存器指向 dlopen 函数 | ESP 寄存器指向栈内存 | 调试程序收回目标进程控制权 )
【Android 逆向】Android 进程注入工具开发 ( EIP 寄存器指向 dlopen 函数 | ESP 寄存器指向栈内存 | 调试程序收回目标进程控制权 )
98 0
|
Android开发
【Android 逆向】ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )
【Android 逆向】ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )
285 0
【Android 逆向】ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )
|
Java Linux Android开发
【Android 逆向】x86 CPU 架构体系 ( 堆内存 | 栈内存 | 函数调用 )
【Android 逆向】x86 CPU 架构体系 ( 堆内存 | 栈内存 | 函数调用 )
157 0
【Android 逆向】x86 CPU 架构体系 ( 堆内存 | 栈内存 | 函数调用 )
|
Android开发
【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task(二)
【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task(二)
250 0
【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task(二)