您的位置:首页 > 其它

Activity启动模式

2016-05-16 10:56 148 查看
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()。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: