在“强制关闭”之后返回到第一个活动

时间:2019-05-07 03:10:49

标签: java android

我创建了一个非常简单的项目,其中包含3个活动。
活动1的一个按钮可以转到活动2
活动2的按钮可以转到活动3
活动3发生按钮崩溃

在崩溃按钮上,我尝试设置throw exception

buttonCrash.setOnclickListener (new View.OnClickListener() {
    @Override
    public void onClick(View v){
        throw new NullPointerException();
    }
});

崩溃后,我单击重新打开,然后活动返回到活动2。如何在每次崩溃时重新启动应用程序或清除活动堆栈?

我尝试制作句柄异常类:

public class MyExceptionHandler implements Thread.UncaughtExceptionHandler {
  private Activity activity;
  public MyExceptionHandler(Activity a) {
    activity = a;
  }
  @Override
  public void uncaughtException(Thread thread, Throwable ex) {
    Intent intent = new Intent(activity, MainActivity.class);
    intent.putExtra("crash", true);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
      | Intent.FLAG_ACTIVITY_CLEAR_TASK
      | Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pendingIntent = PendingIntent.getActivity(MyApplication.getInstance().getBaseContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);
    AlarmManager mgr = (AlarmManager) MyApplication.getInstance().getBaseContext().getSystemService(Context.ALARM_SERVICE);
    mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, pendingIntent);
    activity.finish();
    System.exit(2);
  }
}

但是它突然重启了应用程序,即使我需要先显示崩溃对话框,也可以单击重新打开以再次打开。

enter image description here

4 个答案:

答案 0 :(得分:1)

尝试定义主活动主页和默认主页。在清单的活动中的意图过滤器中添加以下代码:

<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />

答案 1 :(得分:0)

在每个活动过渡中添加活动清除任务标志。

Intent intent = new Intent(this,yourclass.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

答案 2 :(得分:0)

在第二个活动中添加finish()函数

答案 3 :(得分:0)

尝试对活动1使用检查传递

public static boolean DOING_PASS = false;

DOING_PASS的{​​{1}}内部,集合onStart是真实的

activity 1

因此您可以检查@Override void onStart(){ DOING_PASS = true; } 内除活动1之外的所有活动

onCreate