Thread.UncaughtExceptionHandler有多个线程

时间:2016-04-27 09:26:20

标签: java android multithreading exception-handling

我们的Android应用程序使用多个线程。

  • 通常的UI线程
  • 运行多个线程以连接到套接字的通信层(粘性服务)。
  • 还有更多,加载图片,视频......

我们目前在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>

欢迎任何提示或想法。

0 个答案:

没有答案