Activity启动模式

来源:互联网 发布:淘宝实拍保护图片要求 编辑:程序博客网 时间:2024/06/03 18:38

1、LaunchMode

  • standard(标准模式)

Activity的默认启动模式,每次startActivity都会重新创建一个Activity实例,不管之前是否已经存在该Activity实例。被启动的Activity实例会进入到启动它的Activity所属的任务栈中。

  • singleTop(栈顶复用模式)

如果待启动Activity在当前任务栈存在实例,并且实例位于栈顶,则启动Activity不会重新创建实例,而是直接复用之前的实例。同时,Activity的onNewIntent()方法会被调用,而生命周期函数onCreate()、onStart()不会被调用。

  • singleTask(栈中复用模式)

如果待启动Activity在其所属任务栈(TaskAffinity,默认为应用package name)中存在实例,则复用该实例。与singleTop类似,Activity的onNewIntent()方法也会被调用,而生命周期函数onCreate()、onStart()不会被调用。同时,singleTask自带clearTop效果,即任务栈中位于其上方的其他Activity会直接出栈,销毁。

  • singleInstance(单例模式)

强化版singleTask模式。首次启动时,单独为其创建一个任务栈,创建该Activity实例,压入栈中。之后,所有启动该Activity的请求都会复用该实例。
2、Flags

  • FLAG_ACTIVITY_SINGLE_TOP

对应singleTop启动模式

  • FLAG_ACTIVITY_NEW_TASK

对应singleTask启动模式

  • FLAG_ACTIVITY_CLEAR_TOP

启动Activity时,使用该标志会将栈中该Activity实例上方包括该实例在内的所有实例均做出栈操作,然后重新创建该Activity实例入栈。
3、IntentFilter

  • IntentFilter需要同时匹配action、category、data信息,才算匹配成功。
  • 一个Activity可以有多个IntentFilter,匹配其中一个即算匹配成功。
  • setData()和setType()方法互斥,会相互清除对方设置。如需同时设置,可以使用setDataAndType()。
0 0
原创粉丝点击