美文网首页Android
Activity系列——加载模式

Activity系列——加载模式

作者: 似焰如火 | 来源:发表于2020-02-10 10:15 被阅读0次

    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栈转至前台,使其可见。

    相关文章

      网友评论

        本文标题:Activity系列——加载模式

        本文链接:https://www.haomeiwen.com/subject/zkkfzctx.html