Android的4种启动模式

Android 学习之路(九)---- Android启动模式

前台Task进入后台,按Home键到桌面或者按任务栏键进入任务列表
这里可能涉及task切换以及app的切换

启动模式

默认规则:在不同Task中打开同一个Activity,Activity会被创建多个实例,分别放进每一个Task中

1. standard 和 SingleTop

这两个因为只能在应用的自己栈里创建(除设置了taskAffinity),standard会直接创建一个,所以这里会调用onCreate()方法。SingleTop与standard区别在于如果创建的Activity在栈顶能够找到实例,则复用这个实例,因此不会调用onCreate(),会调用onNewIntent(),因此连续创建同一个Activity实例会复用同一个实例。

3. SingleTask

SingleTask涉及不同的Task的跳转,也涉及同一个Task的一些行为
如果是两个app之间使用对方的Activity,被标记的SingleTask的Activity在自己应用的Task中创建,并将整个Task栈放到创建这个Activity的Task栈的上面,保证了被标记的SingleTask的Activity总会在自己的Task中,而且保证自己的Task只存在一个实例就会将Activity上面的Activity实例出栈。该方式打开是应用间的动画,当使栈切换到后台就会将两个Task的栈分开。
如果是自己的应用创建本应用的Activity,则会复用task存在的Activity(不存在则创建新的Activity),在栈里,本实例以上的Activity实例都会被出栈,回收。

4. SingleInstance

SingleInstance只涉及不同的Task的跳转
当创建一个新的被标记SingleInstance的Activity时,会创建一个新的Task,而且只放入这一个Activity实例。并且将本栈放在启动该Activity的Task上面(不是入栈,相当于在将前台栈遮住显示覆盖的Task),当使栈切换到后台就会将两个Task的栈分开,但是由于Activity的taskAffinity与应用的Task的taskAffinity一样,冲突,所以它不会显示在任务栏中,会隐藏,但是不会被销毁。所以在任务栏看不到的任务不代表死亡。

5. 流程图

这里展示了不同应用使用标记SingleTask,以及SingleInstance的task的情况,只涉及不同应用启动这两个标记了的Activity的方式,以及切换后台的情况,大家可以自己使用真机能够更加直观。
在这里插入图片描述
PDF链接:
https://download.csdn.net/download/m0_58860979/88958744

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值