美文网首页
Activity的启动模式

Activity的启动模式

作者: 乆丩乣 | 来源:发表于2019-10-28 16:18 被阅读0次
    Activity的启动模式
    1. standard 标准模式

      系统默认的模式 每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否存在

      Application的Context不能启动Activity

      由于每次启动的Activity都会运行在启动它的那个Activity所在的栈中,所以当我们用ApplicationContext去启动standard模式的Activity时,因为非Activity类型的Context没有所谓的任务栈,所以此时会报错,AndroidRuntimeException

      解决这个问题的方法是为待启动的Activity指定FLAG_ACTIVITY_NEW_TASK标记位,这样在启动此Actvity的时候就会为他创建一个新的任务栈,此时实际上是以SingleTask模式启动的Activity

    2. SingleTask 栈内复用模式

      这是一种单例模式 只要Activity在一个栈中存在 那么多次启动都不会重新创建实例,

      这种模式会回调onNewIntent

      这种模式具有clearTop的效果,会使栈内当前Activity上面的的Activity都全部出栈

      SingleTask
    3. SingleTop 栈顶复用模式

      如果Activity已经处于任务栈顶栈顶,那么此Activity就不会重新创建 同时会回调onNewIntent方法,不会调用onCreate onStart

    4. SingleInstance 单实例模式

      这是一种加强的SingleTask,除了具有SingleTask的所有特性以外,另外,此种模式的Activity只能单独的位于一个栈中

    Activity所需的任务栈

    默认情况下,所有Activity所需的任务栈的名字为应用的包名

    我们可以单独的为每个Activity指定taskAffinity属性来指定任务栈

    Activity的Flag

    指定启动模式

    FLAG_ACTIVITY_NEW_TASK 为Activity指定SingleTask启动模式

    FLAG_ACTIVITY_SINGLE_TOP 为Activity指定SingleTop启动模式

    影响运行状态

    FLAG_ACTIVITY_CLEAR_TOP clearTop效果,同一个任务栈中所有位于它上面的Activity都出栈

    FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 不会出现在历史Activity列表里 与android:excludeFromRecents="true"的效果相同

    相关文章

      网友评论

          本文标题:Activity的启动模式

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