3

我正在尝试通过startActivity带有Intent标志的方法清除堆栈上的每一个活动: (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY)

(我有一个退出按钮,可以重置并完成所有活动,我尝试了所有“如何制作退出按钮,如何终止应用程序”问题/答案。singleInstance launchMode由于MainActivity.

通常这应该工作并自动完成当前活动而无需调用finish(). 但是,当我将 MainActivity 标记为singleInstanceAndroidManifest.xml,它不起作用。如果我删除它singleInstance,它会按预期工作。

如果我finish()在启动之后/之前手动调用MainActivity以清除所有堆栈,finish()则会将应用程序返回到堆栈上的上一个活动。但我已经启动了MainActivity. 所以一切都变得一团糟。

(我尝试添加Intent.FLAG_ACTIVITY_SINGLE_TOPandIntent.FLAG_ACTIVITY_MULTIPLE_TASK只是为了看看它是否改变了任何东西,但它没有)

我需要一个可以使用singleInstance且不需要手动的解决方案finish()

更新 1:我尝试Intent从一个SingleTop活动中启动它(但改变它不会改变)

更新 2:我在 Android 2.3.3 模拟器上试试这个

4

1 回答 1

4

你可以试试finishAffinity(),它会关闭堆栈中所有以前的活动

例子:

Intent intent = new Intent(MainActivity.this, MyActivity.class);
finishAffinity()
startActivity(intent);  
于 2019-04-30T04:17:45.903 回答