一、对话内容
Android启动模式,startActivity中的intent新增flag Activity.FLAG.ACTIVITY_NEW_TASK是否会对目标Activity的启动模式造成影响。 因为非Activity类型的context需要添加这个标志,如果目标activity是SingleTask/SingleTop/SingleInstance启动模式,是否会有影响呢?
Activity.FLAG.ACTIVITY_NEW_TASK
标志主要用于确保当从一个非 Activity
类型的 Context
(例如,一个 Service
或 Application
)启动 Activity
时,该 Activity
会被放置在一个新的任务(task)栈中。
然而,这个标志并不会直接改变目标 Activity
的启动模式(即 singleTask
、singleTop
、standard
或 singleInstance
)。启动模式是在 AndroidManifest.xml
文件中为 <activity>
标签定义的,它决定了 Activity
如何与任务(task)中的其他 Activity
交互。
但 Activity.FLAG.ACTIVITY_NEW_TASK
与启动模式之间有一些交互作用:
- singleTask:如果目标
Activity
已经在当前任务栈中存在,并且它是该栈的根Activity
,那么系统会将这个Activity
带到栈顶,而不是启动一个新的实例。但是,如果Activity.FLAG.ACTIVITY_NEW_TASK
被设置,并且目标Activity
不在当前任务栈中,系统会在一个新的任务栈中启动这个Activity
。 - singleTop:如果目标