正确重启app

时间:2014-06-19 04:17:24

标签: android android-intent android-fragments

我使用此代码重新启动我的应用。

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 - > *关闭,而不是崩溃

但我已经找到了答案。

2 个答案:

答案 0 :(得分:0)

如果你想要一个只有Home Screen的活动堆栈,那么如果用户按下BACK按钮他们EXIT你的应用程序,你就可以添加这两个标志

FLAG_ACTIVITY_CLEAR_TOPFLAG_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);在启动时。

谢谢你们。