启动Activity时如何忽略“SingleTask”的launcheMode?
Posted
技术标签:
【中文标题】启动Activity时如何忽略“SingleTask”的launcheMode?【英文标题】:How to ignore the launcheMode of "SingleTask" when starting an Activity? 【发布时间】:2018-02-27 16:30:43 【问题描述】:B 的启动模式为“SingleTask”的三个 Activity。我想知道如何在使用 C 时启动新 B 而不是重新启动旧 B?
【问题讨论】:
【参考方案1】:不幸的是,如果清单中的 Activity B 设置为使用android:launchMode="singleTask"
,则(据我所知)无法覆盖它。
但是,当您想要singleTask
行为时,您可以从清单中删除此属性并使用类似这样的代码:
Intent intent = new Intent(this, ActivityB.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
最终结果是当你想要它时你得到singleTask
行为,而当你不想要它时你得不到它。你只需要改变策略。
【讨论】:
【参考方案2】:在活动的onBack press方法中使用以下代码
@Override
public void onBackPressed()
Intent BackpressedIntent = new Intent();
BackpressedIntent .setClass(getApplicationContext(),B.class);
BackpressedIntent .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(BackpressedIntent );
finish();
【讨论】:
以上是关于启动Activity时如何忽略“SingleTask”的launcheMode?的主要内容,如果未能解决你的问题,请参考以下文章