android 任务栈的管理

在进行android开发时如果不对android任务栈进行充分的管理,则在app运行过程中将会产生各种莫名其妙的问题,下边来对android任务栈进行必要的解释:

1,一般app的入口点只有一个,就是activity属性为MAIN和LAUNCHER的activity,一个activity有4种启动方式,分别是standard,singleTop,singleTask,singleInstance。

(1)standard:可以实例化多次,可以存在不同的task中,可以重复堆叠;

(2)singleTop:在一个task栈中可以有多个实例,但是但栈顶有相同的activity时不会创建新实例,调用onNewIntent方法启动该activity;

(3)singleTask:app内调用该activity时,如果该activity已经没有实例化,将会在本app内的task中实例化;如果已经实例化,则会将此activity所在的task栈中其上的activity全部销毁,这样activity就自动调整到task栈栈顶了,然后调用onNewIntent方法。当其他app调用该activity时,如果没有实例化,则创建新的task栈并实例化后入栈,,如果已经实例化,同样是销毁此activity所在的task栈中其上的所有activity。总之就是:在一个task栈中,如果设置activity为singleTask属性时,启动此activity时不允许其他activity在其之上。

(4)singleInstance:独自在一个task栈中。

2,任务栈清理属性

(1)默认情况下,一个任务栈在后台常驻一段时间后,系统会将这个任务栈中除此任务栈中根activity外的所有activity清楚掉,所以当此任务栈再回到前台时就只会显示此任务栈中的根activity了。

(2)alwaysRetainTaskState属性:如果将根activity的这个属性设置为“true”,一旦其所在任务栈切换到后台,即便很长一段时间,系统也不会对其清理;

(3)ClearTaskOnLaunch属性:如果将根activity的这个属性设置为“true”,一旦其所在的任务栈切换到后台一段时间,系统就会对其管理,清除此task栈中除根activity之外的activity。

(4)finishTaskOnLaunch属性:如果将根activity的这个属性设置为“true”,一旦其所在的任务栈切换到后台一段时间,系统会直接清除掉这个task栈中的所有activity;

3,多任务栈设计

(1)activity属性中有一个taskaffinity属性,设置这个属性后,可以使几个activity共用一个task栈,进而调整整个app中activity的跳转流程。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值