我使用此代码重新启动我的应用。
Intent i=getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
确实会重启应用,跳转到首次启动活动。但它会回到我按下时执行意图的片段。
然后我添加了这个以使backstack无效:
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
然后现在当我按下后退按钮时,它会返回到保存早期片段的活动。
问题:
我应该在第一次发布活动中覆盖onBackPressed
还是有更好的方法?
屏幕A - 启动
屏幕B - 首次启动屏幕
屏幕C - 主要
以下是我在没有完成时重新启动(从main)时发生的情况:C - > B - > A - > *背压 - > ç
所以我添加了完成,然后就是这样:C - > B - > *关闭,而不是崩溃
但我已经找到了答案。
答案 0 :(得分:0)
如果你想要一个只有Home Screen
的活动堆栈,那么如果用户按下BACK
按钮他们EXIT
你的应用程序,你就可以添加这两个标志
FLAG_ACTIVITY_CLEAR_TOP
和FLAG_ACTIVITY_SINGLE_TOP
Intent i = new Intent (this, Home.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
这将完成当前活动与您正在开始的活动之间的堆栈中的所有活动。
希望这会给你一些想法。快乐的编码。
我假设你想在重启后退出你的应用程序
答案 1 :(得分:0)
基于link,我就是这样做的,
在启动画面上,我放了startActivityForResult(intent, REQUEST_EXIT);
和
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_EXIT) {
if (resultCode == RESULT_OK) {
this.finish(); }}}
在调用完成之前,和setResult(RESULT_OK, null);
在启动时。
谢谢你们。