1

我有以下代码来处理任何未捕获的异常并从启动画面重新启动应用程序,因为我在启动画面中有一大堆初始化。这是我的启动屏幕。

现在我有以下代码来实现这个效果:

@Override
    public void uncaughtException(Thread thread, Throwable ex) {
        // restart Application
        Log.e("OSRAM Lightify", "LightifyApplication: UNCAUGHT EXCEPTION FOUND: \n" + ex.getStackTrace());

        Intent reStartIntent = getBaseContext().getPackageManager()
                .getLaunchIntentForPackage(getBaseContext().getPackageName());
        reStartIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(reStartIntent);


    }

但是挂起startActivity(reStartIntent);并且屏幕变黑。

有人可以帮助我了解这里发生了什么吗?

4

1 回答 1

0

可能有很多原因 - 在此之后你想像这样重新开始:

@Override
public void uncaughtException(final Thread thread, final Throwable ex) {

    LOG.error("", ex);

    installRestartIntent();

    System.exit(2);
}

private void installRestartIntent() {

    Intent rescueIntent = getBaseContext().getPackageManager()
            .getLaunchIntentForPackage(getBaseContext().getPackageName());
    rescueIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    final PendingIntent pendingIntent = PendingIntent.getActivity(application,
                                                                  0,
                                                                  rescueIntent,
                                                                  rescueIntent.getFlags());
    final AlarmManager alarmManager = (AlarmManager) application.getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC, DateTime.now().plusSeconds(1).getMillis(), pendingIntent);
}

编辑:小心 - 一些崩溃可能会导致循环 - 你可能想检查一下!

于 2014-10-11T14:31:03.413 回答