activity启动模式

activity启动模式有四种
1、standard
这个是活动启动的默认模式,系统不会管这个活动在栈中是否存在,每次启动都会创建一个新的实例。
Intent intentSelf= new Intent(MainActivity.this, MainActivity.class);
startActivity(intentSelf);
如上面的自己启动自己,还是会创建的。
2、singleTop
修改为singleTop启动模式,在androidManefist.xml对应的activity中添加android:launchMode=“singleTop”,singleTop启动模式,如果栈顶是该activity,则不会再启动该activity,否则,还是会启动对应的activity。如1中所示的,自己启动自己,如果是singleTop,则不会再创建。如果MainActivity启动了SecondActivity,在SecondActivity再启动MainActivity,则会再创建MainActivity的实例。
3、singleTask
一个栈里只能有一个该activity的实例,当再启动该activity时,如果栈中有该activity的实例,则栈顶的activity都出栈,也就是destory掉。如下图所示:MainActivity时singleTask,MainActivity启动SecondActivity,SecondActivity启动ThirdActivity,ThirdAcitivity启动MainActivity,则调MainActivity的onRestart,SecondActivity和ThirdActivity都destroy了。
在这里插入图片描述
4、singleInstance
singleInstance模式,那么系统中只会存在一个此activity,会有一个task放这个activity,当两个以上activity是singleInstance模式,并且都是同一个应用,如果不指定taskAffinity,那么按home键,会导致activity被杀,最先处于后台的activity被杀掉。按下home键时系统会清理最近不活动的和application相同的taskAffinity的所有处于后台的栈,taskAffinity默认与application是同一个。
在这里插入图片描述

singleInstance和taskAffinity的区别可看这个文章
https://blog.csdn.net/zy13608089849/article/details/82997140

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值