假设在一个Android应用程序中有两个活动,其启动模式为“ singleInstance”。在下面假设一个例子。
我正在从活动A-> B(launchMode="singleInstance"
)导航。现在从活动B->C。最后,从活动C-> D({launchMode="singleInstance"
)导航。
现在,我们知道活动B的实例将在另一个任务中创建,而A和C将在另一个任务中。
现在,我的问题是,活动D的任务实例将放置在哪个位置。是活动B,还是为活动D创建其他任务。
谢谢。
答案 0 :(得分:2)
如果您不想阅读说明,我将粗体回答。
使用launchMode="singleInstance"
时,要记住两件事:
因此,启动模式为singleInstance
的活动将始终隔离在其自己的任务中。该任务中将没有其他活动。
以活动A,B,C和D问题中的示例为例:
launchMode="singleInstance"
,因此它是一项新任务launchMode="singleInstance"
,因此它是一项新任务从这里发生的情况来看,您有一个任务可以存储launchMode="standard"
活动A和活动C。活动B在它自己的任务中。 活动D是它自己的任务。
因此,如果您选择退出这些活动,则会注意到:
发生这种情况是因为活动C与活动A处于同一任务上。
此外,由于launchMode="singleInstance"
,活动D肯定不会与活动B处于同一任务,因为活动B的任务仅适用于活动B。
请记住,一次可以在后台执行任何数量的任务。只是如果持有太多内存或系统需要内存,它将开始破坏您多个任务中的这些后台活动。