图解Activity启动模式、flag及其他启动属性-参考官方文档

launchMode:

1.standard

如果启动该Activity的context是Activity,则新建一个Activity实例,该target Activity在source Activity的Task中。如果启动改Activity的context不是Activity,则新建一个Activity实例,并创建一个新的TaskRecord。

2.singleTop

如果启动该Activity的是Activity,那么看target Activity所在的Task的Top Activity是否与targetActivity同一类型,如果是同一类型,则调用Top Activity的onNewIntent(Intent),如果是不同类型,则创建一个target Activity实例放到Task顶部,并调用器onCreate()方法。这个模式下,Activity实例不是进程唯一,也不是Task唯一,而是指定Task的Top Activity类型唯一。当然Top Activity如果是pause状态,则在调用onNewIntent()前,将会调用onResume();

3.singleTask

在进程中只有一个实例。如果启动该Activity的是Activity,且两个Activity是同一应用,且target Activity没有声明taskAffinity属性,则target Activity与sourceActivity在同一task。sourceActivity 所在Task没有Target Activity类型的实例,则创建一个。source Activity所在Task存在一个target Activity类型的实例,则弹出其上的Activity,如下图:

如果ActivityB和Activity A不是在同一个应用定义的,那么ActivityB将在新的Task中。如果Activity B和Activity A是同一应用的,但是ActivityB声明了taskAffinity,那么ActivityB将在声明的task中,如果声明的task已存在,那么就去到那个task,如果不存在,则创建一个。如下图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值