美文网首页
理解Activity启动模式

理解Activity启动模式

作者: 黑键手记 | 来源:发表于2018-10-29 14:25 被阅读30次

    Activity启动模式一共四种

    • standard
    • singleTop
    • singleTask
    • singleInstance

    一共四种。

    怎么修改 activity 的启动模式

    在清单文件中 的 activity 的标签中添加属性:

        android:launchMode="启动模式"
    

    activity stack:activity栈
    android 中的 activity 的启动是受activity栈所管理的,因为存在 activity 栈,所以启动模式才有意义

    standard模式

    activity 的默认模式,即不给 activity 设置上面的 launchMode属性,就会按照默认的启动模式启动

    特点

    启动一个 activity ,就会往 activity栈中添加一个实例,比如activity A 跳转到B ,B 跳转到C ,C 跳转到D,D 跳转到A ,A 跳转到B

    那么,在activity栈 内就会 从底到顶排列ABCDAB

    懒得画图:
    B
    A
    D
    C
    B
    A
    这样样子的,那么栈的特性是 “后进先出”,所以当我们在这个时候点击返回键的时候,B A D C B A 依次退出,最终 程序退出

    singleTop 模式

    按照上方所说的,我们在清单文件中添加

      activity:lauchMode="singleTop"
    

    就可以让当前的Activity设置成为 singleTop模式

    特点

    singleTop模式:在创建实例时,如果当前实例在Activity栈的栈顶,那么新的实例将不会创建,而是会复用栈顶的这个实例,此时会调用这个栈顶实例的 activity中的 onNewInstance()方法。

    举个例子,现在activity C是 singleTop 模式,A B是普通模式

    那么现在 A跳转到B ,B跳转到C,C再跳转到C

    这个时候,在C 跳转到C的时候 ,新的C 不会再创建,而是会复用当前的C ,并且调用C里面的onNewIntance()方法
    activity栈的模式就是这样的
    C
    B
    A

    但是如果相同的案例,如果ABC都是standard模式,那么
    activity栈的模式就是
    C
    C
    B
    A

    singleTask模式

    按照上方所说的,我们在清单文件中添加

    activity:lauchMode="singleTask"
    

    就可以让当前的Activity设置成为 singleTask模式

    特点

    在创建实例时,会在activity栈内 遍历一遍,看看是否有当前activity的实例,如果有,则复用,并且把其他在这个实例上面的 activity实例退出。如果没有,则会创建一个新的实例并进入到这个activity栈中

    举个例子

    现在activity A是 singleTop 模式,B C是普通模式

    现在点击A 跳转B ,B跳转到C,C再跳转到A,那么在Activity栈中是这样的过程

    A跳B:
    B
    A
    B再跳C:
    C
    B
    A
    再从C跳到A:
    A

    singleInstance模式

    按照上方所说的,我们在清单文件中添加

    activity:lauchMode="singleInstance"
    

    就可以让当前的Activity设置成为 singleInstance模式

    特点

    在创建singleInstance实例的时候,会重新开启一个activity栈,并且将该实例放到这个栈中。

    举个例子
    C是SingleInstance模式

    现在A跳到B,B跳到C,那么A和B 会在一个activity栈,而在B跳转到C的时候,由于C是singleInstance模式,所以会开启一个新的activity栈:
    所以此时,activity栈会是这个样子的

    第一个栈:
    B
    A
    第二个栈:
    C

    总结

    一般我们只是用standard模式。

    相关文章

      网友评论

          本文标题:理解Activity启动模式

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