0

ActivityA启动一个子 Activity B,如果B因未捕获的异常而失败,它会关闭并且 Android 系统A在新进程中启动父 Activity。现在,如果父 Activity 以新状态开始,但事实并非如此,一切都会好起来的。即使它是一个新进程,活动的状态也会以某种方式恢复。这会导致很多问题。

阅读类似的问题,这是我迄今为止尝试过的:

在儿童活动中:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandle() {
        public void uncaughtException(Thread thread, Throwable ex) {
            // replacing the following 5 with just finish() doesn't help
            // either because then the screen just goes all black
            final Intent rootActivity = new Intent(getApplicationContext(), RootActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(rootActivity);
            android.os.Process.killProcess(android.os.Process.myPid());
            System.exit(0);
            return;
        }
    };
    ...
    ...
    ...
}

我尝试的另一件事是android:multiProcess="false"为父活动设置......不会改变任何东西。

Android 系统仍会启动父 Activity(在新进程中)并执行 onRestoreInstance。

我希望应用程序因“发生意外错误”或任何系统对话框而完全死亡,并且根本不重新启动。

请帮忙,这让我发疯了。

4

1 回答 1

0

你可以自己模仿这种行为。使用和在 Activity B 中启动 Activity startActivityForResultB just set setResult(RESULT_CANCELLED);。如果您的 Activity 有未处理的异常,您应该收到onActivityResult. 如果该结果仍然被取消,您可以完成您的活动并使用 Intent 开始一个新的活动。如果在完成之前成功,您只需在活动 B 中设置另一个结果!

于 2013-11-06T17:19:41.253 回答