Activity的四种启动模式

在了解启动模式前先了解一下啊什么是任务栈
task stack(任务栈)
栈:先进后出→比喻成箱子
队列:先进先出→比喻成水管

Activity由系统创建启动的时候,有几种模式,我们把这几种模式叫做Activity的启动模式

以下为activity的四种启动模式:

  • standard (标准模式)
  • singleTop (单一栈顶模式)
  • singTask (单任务模式)
  • singleInstance (单例模式)

Activity的四种启动模式

1.standard 标准模式
先进后出,每开启一个被设置的Activity,就会创建新的对象进入任务栈,点击返回的时候从栈顶一个一个弹出。
使用场景:大部分

2.singleTop 单一栈顶模式:
如果要启动的任务已经在栈顶了,那么它就不会再创建

使用场景:如果这个任务是比较被动的,比如说,浏览器的收藏夹,可以被javaScript的代码控制,比如说通知,可以被拉起来的这些,比较被动的任务,则使用SingleTop模式,防止被多次创建。如果已经在顶部了,或者我们可以理解为已经聚焦了,就没必要再创建了。

3.singleTask 单任务模式:
保证在一个栈里只有一个目标任务,如果ActivityB为singleTask,那么在一个任务栈里面就只有一个ActivityB。

  • 情况一:任务栈里没有,就创建然后放在栈顶
  • 情况二:任务栈里已经存在,不会在创建,而是把ActivityB以上的所有任务都出栈
    ,保证ActivityB在顶部

4.SingleInstance 单例模式:
自己独占一个任务栈
举例:第一个activityA是standrand模式,第二个activityB singleInstance模式
当先启动activityA时有一个任务栈,新创建activityB的时候会独占用另一个任务栈,同时把这个任务栈提前,所以这边需要注意点击返回的时候一些可能会出现的问题

使用场景:在整个系统中只有唯一一个实例,比如有道词典的取词,因为它在每个界面都可以取词

可以使用Excel表格模拟出栈入栈,任务栈提前的行为来加深理解

这边只是简单整理自己看,有需要的可以看下面链接,下方博主b站上有学习视频与笔记,讲的特别好

转载自Android开发基础之Activity的启动模式