gpt4 book ai didi

如果另一个 Activity 崩溃,Android 会返回到上一个 Activity

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:40 25 4
gpt4 key购买 nike

如果另一个 Activity 导致抛出未处理的异常,有没有办法让 Android 返回到我的应用程序中的上一个 Activity

最佳答案

你可以尝试使用Thread.setDefaultUncaughtExceptionHandler当任何线程由于未处理的异常而死亡时接收通知。但我不确定该机制的 Dalvik 实现。您可能无法从 UncaughtExceptionHandler 启动另一个 Activity ,因为文档没有提及线程/进程复活。

更新

好的。我对其进行了测试,现在我确信如果您的应用程序在 UI 线程中抛出异常,您将不能能够使用上述技术返回到之前的 Activity。发生这种情况是因为该异常会导致应用程序 main looper退出,因此您的应用程序将无法处理任何进一步的 UI 消息。

我发现实现您想要的唯一可能方法是以下肮脏的技巧:

public class MyApplication extends Application {

@Override
public void onCreate() {
super.onCreate();
while (true) {
try {
Log.i("MyLooper", "Starting my looper");
Looper.loop();
} catch (Exception e) {
Log.e("MyLooper", "Caught the exception in UI thread, e:", e);
showPreviousActivity();
}
}
}

private void showPreviousActivity() {
// your implementation of showing the previous activity
}
}

并在您的 AndroidManifest.xml 中注册 MyApplication:

<application android:name=".MyApplication">

showPreviousActivity() 方法的实现由您决定。一种可能的解决方案是跟踪某些 ActivityTracker 类中的当前 Activity 实例,并从 showPreviousActivity 代码中调用当前 Activity finish() 方法。

关于如果另一个 Activity 崩溃,Android 会返回到上一个 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com