Activity的启动模式

2019-10-28  本文已影响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"的效果相同

上一篇下一篇

猜你喜欢

热点阅读