Android启动模式-精华篇

作者: TryEnough | 来源:发表于2019-03-13 16:41 被阅读27次

    支持原文:http://tryenough.com/android-launch-mode

    Activity的四种启动模式如下:

    **standard、singleTop、singleTask、singleInstance **

    standard-默认模式

    1.谁启动了该模式的Activity,该Activity就属于启动它的Activity的任务栈中
    2.每次启动一个Activity都会重写创建一个新的实例,不管这个实例存不存在

    singleTop-栈顶复用模式

    1.当前栈中已有该Activity的实例并且该实例位于栈顶时,不会新建实例,而是复用栈顶的实例,并且会将Intent对象传入,回调onNewIntent方法
    2.当前栈中已有该Activity的实例但是该实例不在栈顶时,其行为和standard启动模式一样,依然会创建一个新的实例

    支持原文:http://tryenough.com/android-launch-mode

    taskAffinity属性

    1.taskAffinity可以指定activity启动的任务栈
    2.taskAffinity属性不对standard和singleTop模式有任何影响,即时你指定了该属性为其他不同的值,这两种启动模式下不会创建新的task

    设置代码如下:

    <activity android:name=".ActivitySingleTop" android:launchMode="singleTop" android:taskAffinity="com.castiel.demo.singletop"/>
    

    singleTask-栈内复用模式

    1.栈中存在这个Activity的实例就会复用这个Activity,不管它是否位于栈顶,复用时,会将它上面的Activity全部出栈,并且会回调该实例的onNewIntent方法。
    2.taskAffinity属性可以指定其任务栈,如果指定也只是会在指定的栈中创建,如果不同的app指定相同的栈也是可以的,不同的app指定相同的栈启动同一个activity的话,会被启动到了同一个task中。

    支持原文:http://tryenough.com/android-launch-mode

    可以使用

    使用命令adb shell dumpsys activity activities可进行查看栈中的内容

    支持原文:http://tryenough.com/android-launch-mode

    singleInstance-全局唯一模式

    1.这种模式下的Activity会单独占用一个Task栈,具有全局唯一性
    2.以singleInstance模式启动的Activity在整个系统中是单例的,如果在启动这样的Activiyt时,已经存在了一个实例,那么会把它所在的任务调度到前台,重用这个实例。

    相关文章

      网友评论

        本文标题:Android启动模式-精华篇

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