您好我想问一个我遇到的问题。
涉及:
活动生命周期,由未决意图触发的接收器(由警报生成)&运行时异常。
假设我得到了:
例如抛出运行时异常的Activity类代码的一部分(此处仅显示活动生命周期流和运行时异常中断的想法):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(true) { throw new RuntimeException("EXC");
}
@Override
protected void onStop() {
// here we stop alarm or unregister receiver
}
我的观察:
问题:
我想到了什么想法(解决方案):
实现Thread.UncaughtExceptionHandler以取消注册接收器/停止警报???
编辑:
做了一些挖掘后:
有两种方法可以设置UncaughtExceptionHandler:
app框架已经提供了一个全局未捕获的异常处理程序。此处生成带有“AndroidRuntime”标记的异常跟踪,然后VM被终止:
首先是未捕获的例外
当我在记忆中找到一些半死的东西时,我有两个选择:
如果我指定全局,似乎很难管理,我将覆盖所有线程的应用程序框架的行为。
答案 0 :(得分:0)
您应该尽可能强大地编码。这意味着在存在运行时异常的情况下,您不应该尝试清理,因为您永远不会填补所有空白。您需要做的是在以下位置添加健全性检查:
IntentService
- 它应该在启动时检查所有条件是否正确。BroadcastReceiver
- 在调用onReceive()
时,应检查所有条件是否正确。如果您这样编码,则无需担心在所有错误情况下都能正确清理。