Activity系列——加载模式

Android系统中是通过Activity栈的方式来管理Activity的,当我们启动一个应用时,系统就会为之创建一个Task栈,用来管理多个Activity。先启动的Activity会放在栈的底部,新启动的Activity在栈的顶部,也就是先进后出。加载模式就是要负责Activity与Task栈之间的加载关系。

1. 有哪些加载模式

  • standard: 标准模式
  • singleTop: 栈顶单例模式
  • singleTask:栈内单例模式
  • singleInstance:全局单例模式

2. 详细介绍

2.1 standard 标准模式

采用这种模式,每次启动Activity时,系统总会为目标Activity创建一个新的实例,并将该实例添加到原有的Task栈中。例如,此时栈顶为Activity_A,此时若又要创建Activity_A,那么系统将创建新的Activity_A实例,将其加入到原有Task栈的Activity_A上方。

2.2 singleTop 栈顶单例模式

顾名思义,采用这种模式时,只允许栈顶有一个目标Activity实例。例如,此时栈顶为Activity_A,此时若又要创建Activity_A,那么系统将直接复用已有的实例,而不再创建新的。

2.3 singleTask 栈内单例模式

望文生义,没错该模式只允许栈内只有一个目标Activity,并将其至于栈顶。例如,意图创建Activity_A,而此时栈内情况分为两种,第一种是栈内没有Activity_A的实例,第二种就是有一个。如果没有,那就好说了,创建一个Activity_A并将其至于栈顶。如果栈内有,又分为两种,第一种是Activity_A就在栈顶,那么此时与singleTop相同,系统将直接复用栈顶已有的实例,而不再创建新的;如果不在栈顶,那么系统将Activity_A之上的所有Activity移除栈,从而使其转至栈顶。

2.4 singleInstance 全局单例模式

全局单例,就是无论从哪个Task中启动目标Activity,系统只会创建一个Activity实例,并且该Activity独占一个Task栈。例如,意图创建一个全局单例模式的Activity_A,此时分为两种情况。第一,目标Activity不存在,此时系统创建一个全新的Task栈,然后再创建Activity_A实例,并将其加入到栈内;第二,Activity_A已经存在,此时无论它处于哪个应用,也无论它位于哪个Task,系统都会将Activity_A所在的Task栈转至前台,使其可见。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容