有没有办法问的Android我在另一个Activity
导致未处理的异常事件的应用程序中返回到上一个Activity
被抛出?Android的回归到以前的活动,如果另一个活动崩溃
回答
你可以尝试使用Thread.setDefaultUncaughtExceptionHandler
当任何线程因死亡未处理的异常收到通知。但我不确定Dalvik如何实现该机制。这可能会导致你无法从UncaughtExceptionHandler
开始另一项活动,因为文档中没有提到线程/进程的复活。
更新
确定。我测试了它,现在我敢肯定你会不可以重新使用上述技术,以前的活动,如果您的应用程序扔在UI线程例外。发生这种情况是因为该异常会导致应用程序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
代码中的当前活动finish()
方法。
使用try-catch
块捕获异常并startActivity
那里。如果没有捕获它,你不能去参加其他活动。
没有例外,atm。如果我有一个未处理的异常,我想要编写代码,但我不知道它将会在哪里。 – styler1972
你需要弄清楚当活动崩溃时,它会关闭应用程序。 –
这是一个假设的情况,因为它现在没有崩溃 – styler1972
- 1. android活动崩溃
- 2. 的Facebook的Android SDK 3.0登录另一个活动崩溃
- 3. 多个活动,崩溃改变活动
- 4. SQLite Arraylist崩溃android活动
- 5. 移动到android中的活动组中的以前的活动
- 6. Android活动启动时崩溃
- 7. 启动活动,并返回到以前的活动
- 8. 试图导航到以前的活动时意图崩溃
- 9. 简单的Android活动导致崩溃
- 10. webview崩溃的活动(Android Studio)
- 11. onCreate()的活动崩溃
- 12. Android:当活动返回到前一活动时检测
- 13. 去Android的活动(也回到之前的活动)
- 14. 从一个活动到另一个活动的动态列表
- 15. 如何在android中从一个活动移动到另一个活动?
- 16. 在另一个Android活动
- 17. 的Android的WebView要到另一个活动,然后回到
- 18. 如何将一个活动重定向到另一个活动
- 19. signIn活动不会引导到另一个Android活动
- 20. 暂停/恢复活动的另一个活动开始的Android
- 21. Android的通知 - 如何把活动前没有召回活动
- 22. 继续从一个活动滚动到另一个活动
- 23. 移动到下一个活动,不杀死前一个活动
- 24. 如何从一个活动组中的活动导航到另一个活动android
- 25. 从Android活动调用时OpenCv崩溃
- 26. 地图片段活动崩溃,android?
- 27. 活动恢复后Android SoundBoard崩溃
- 28. Android视频查看活动崩溃
- 29. LiveData不会从一个活动更新数据到另一个活动 - 的Android
- 30. Android:将数据从一个活动传递到ListView中的另一个活动
如果应用程序已超过1'Activity'运行,'getApplicationContext()'仍然会提供一个有效的'上下文'。然后,您可以调用'startActivity()'从里面注册'UncaughtExceptionHandler';) – styler1972
如果你使用'UncaughtExceptionHandler'和异常发生在UI线程然后'startActivity()'不会帮助,因为主尺蠖是已经死了。 – Idolon