我们的Android应用程序使用多个线程。
我们目前在UncaughtExceptionHandler
:
Application
public class OurApplication extends MultiDexApplication {
public void onCreate (){
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable e) {
//...
}
});
}
}
对此问题进行了一些研究我们发现了这个问题(在此post。),我们开始考虑每个帖子:
基本上,你必须实现自己的UncaughtExceptionHandler实例,然后你必须确保你的App运行的每个线程都调用setUncaughtExceptionHandler。
由于我们仍然有一些例外,基本上来自粘性服务,而UncaughtExceptionHandler
没有处理,我们认为没有为某些线程正确设置处理程序。
因为默认处理程序是java.lang.Thread
的静态变量,所以这似乎不可能,并且在Application
中只有一个处理程序似乎就足够了。
例如,如果服务在将处理程序定义到应用程序之前启动,是否会导致这种情况?
编辑:
我们的服务不会在单独的流程上运行:
<service
android:name=".servicios.ServiceBoot"
android:action="com.aplicaty.soapbox.MyService"
android:enabled="true"
android:exported="true" >
</service>
欢迎任何提示或想法。