【问题标题】:Clear all the activities in backstack and restart main activity清除 backstack 中的所有活动并重新启动主要活动
【发布时间】:2020-09-09 22:08:01
【问题描述】:

我有一个场景,当用户单击主活动中的按钮时,我需要重新启动我的应用程序。
**AppFlow:
** 活动A -> 活动B -> 活动C
用户在 ActivityC 中按下返回按钮,然后在 ActivityB 中按下并到达 ActivityA。
在 ActivityA 中,当用户单击按钮时,应用程序通过清除后台堆栈关闭,并尝试通过完成它来重新启动 ActivityA。当应用程序从 ActivityA 退出时会发生什么,ActivityB 会出现一秒钟然后应用程序退出。我的要求是完成 ActivityA 时不应出现 backstack 中的任何活动。
我使用了以下逻辑:
 Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_CLEAR_TASK
                | Intent.FLAG_ACTIVITY_NEW_TASK);
        Log.D(LOG_TAG , "finishAndRestartApp() -> creating pending intent");
        PendingIntent pendingIntent = PendingIntent.getActivity(this.getBaseContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);
        AlarmManager mgr = (AlarmManager) this.getBaseContext().getSystemService(Context.ALARM_SERVICE);
        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, pendingIntent);
        Log.D(LOG_TAG ,start finishing mainActivity AND RESTART IT");
        finish();

谁能帮我解决这个问题。

提前致谢。

【问题讨论】:

  • 您的意思是当您单击 Activity A 上的按钮时 -> 进入 Activity B 并退出应用程序?
  • 不,当点击 ActivityA 中的 Button 时,App 退出显示 ActivityB 几秒钟。当我尝试在 ActivityA 中退出应用程序时,我不想看到任何其他活动

标签: android android-activity back-stack


【解决方案1】:

使用finishAffinity() 而不是finish()

【讨论】:

    【解决方案2】:
    Intent intent = new Intent(this, A.class);
    
    intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP |  Intent.FLAG_ACTIVITY_NEW_TASK );
    
    startActivity(intent);
    

    【讨论】:

      最近更新 更多