使用Intent标志"CLEAR_TOP"和launchMode ="singleTask"有什么区别?

mud*_*sen 9 android intentfilter android-intent android-activity

使用Intentflag "FLAG_ACTIVITY_NEW_TASK"&"FLAG_ACTIVITY_CLEAR_TOP"和有什么区别launchMode="singleTask"?设置意图标志FLAG_ACTIVITY_SINGLE_TOP和设置launchMode有什么区别 "singleTop".

Vik*_*ngh 5

我从你回答Tim的评论中理解了你的问题.所以你想知道

设置launchModes和将Intentflags设置为活动时的行为差异

回答你这个问题,你设置launchMode了一个Activity内部AndroiManifest.xml文件,但具体的上市行为在某些方面的改变运行时通过Intent标志FLAG_ACTIVITY_SINGLE_TOP,FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_MULTIPLE_TASK等.

现在让我们来看看你在主要问题中提到的两个问题.

使用Intent标志"FLAG_ACTIVITY_NEW_TASK"和"FLAG_ACTIVITY_CLEAR_TOP"和launchMode ="singleTask"有什么区别?

FLAG_ACTIVITY_NEW_TASK

当我们通过intent设置此标志并启动该活动时.在这种情况下,该活动将成为此历史堆栈上新任务的开始.任务(从启动它的活动到下一个任务活动)定义用户可以移动到的原子活动组.这意味着它将创建一个单独的历史堆栈.例如,在您的应用程序中,您有设置图标,当您单击该图标并转到设置活动时您还有其他活动.此处记录的所有操作仅从您的设置活动开始.

FLAG_ACTIVITY_CLEAR_TOP

正如其名称清楚地说明的那样,如果您在现有任务中启动带有此标志的Activity (请理解任务,那么一切都将非常容易理解),在这种情况下,此活动上方的堆栈中的所有活动都将被关闭,这将成为任务中的最后一个活动或最旧的活动.

singleTask

当您启动lanuchMode = "singleTask"已设置的交流活动并且已经有一个以此活动开始的任务运行时,则不会启动新实例,而是将当前任务放在前面.

你的借口问题

将意图标志设置为FLAG_ACTIVITY_SINGLE_TOP并将launchMode设置为"singleTop"有什么区别?

FLAG_ACTIVITY_SINGLE_TOPlanuchMode = "singleTop"

两者都具有相同的行为,在运行时设置标志,在开始时在AndroidManifest.xml中设置launchMode.行为是,此活动将是任务中顶部的唯一活动.如果它已经在历史堆栈的顶部运行,则活动将不会再次启动.

注意:理解行为的最佳方法是遵循任何教程并进行实际检查.玩弄代码并查看行为.

以下是一些有用的链接:

启动模式:https://developer.android.com/reference/android/R.styleable#AndroidManifestActivity_launchMode

意图标志:https://developer.android.com/reference/android/content/Intent