我理解launchMode:"singleTask“意味着如果之前创建了一个活动,并要求它在将来显示出来,那么Android只会显示旧的一个,而不是创建一个新的实例。我所面临的问题可以用一个例子来说明:-
假设我们有两项活动
A权限
B (活动与launchMode="singleTask")启用(这是其宣言中的全部内容)
现在,如果A创建了一个与B (A->B)相对应的意图,则A将被完成并从活动堆栈中删除。我怎样才能阻止这一切的发生。我想要的是,当A调用B(创建一个意图)时,以前的B实例被返回,A保持原样,而不是被销毁。谢谢你的帮助。任何帮助都是非常感谢的。
编辑
<activity
android:name="com.example.Activities.A"
android:launchMode="singleTask"
android:clearTaskOnLaunch="false"
android:finishOnTaskLaunch="false"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.example.Activities.B"
android:launchMode="singleTask"
android:clearTaskOnLaunch="false"
android:finishOnTaskLaunch="false"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
发布于 2016-12-28 07:14:47
如果您只想让两个活动在同一个任务中来回切换,那么您应该删除所有特殊的启动模式,然后从另一个活动中启动一个活动,如下所示:
Intent intent = new Intent(this, ActivityX.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
如果使用此方法从A
启动A
,也使用此方法从B
启动A
,则任务中的每个Activity
将有一个实例,它们将只更改堆栈中的位置。这不会创建任何新的实例。
另外,删除<intent-filter>
声明,您不需要它们。根Activity
只需要一个,它应该包含"ACTION=MAIN“和"CATEGORY=LAUNCHER”。
https://stackoverflow.com/questions/37623939
复制相似问题