小编典典

如何防止android应用由于后台线程异常而崩溃?

java

这是一个普遍的问题,是从特定情况提出的,但我想获得一个一般性的答案,说明如何处理以下情况:

背景:

我有一个应用程序,它在使用一些第三方库(广告网络提供商SDK-特别是- AdMob基于SDK Google Play Services)。该库的功能对于应用程序并不重要。该库创建一个或多个后台工作线程。有时(非常罕见的情况),这些后台线程之一存在未处理的异常,导致应用程序崩溃。我想忽略由该库引起的所有异常,无论其原因如何:在最坏的情况下,应用程序用户将看不到广告-
这比应用程序崩溃要好得多。

由于库本身创建了后台线程-我不能仅通过try / catch来包装它们。

有什么方法可以捕获所有未处理的后台(非主线程)线程异常,并在这种情况下只是杀死线程并防止应用程序崩溃?

相关问题

我看到了很多问题,但是其中一些问题过于具体(无法涵盖我的情况),其他问题是指开发人员可以控制线程创建并能够使用try /
catch包装整个线程的情况。如果我仍然错过了涉及此案的相关问题,请点击链接


阅读 393

收藏
2020-10-20

共1个答案

小编典典

您需要做的就是使用BaseActivity扩展所有活动。该应用程序绝不会崩溃

BaseActivity的代码片段:

public class BaseActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
                Log.e("Error"+Thread.currentThread().getStackTrace()[2],paramThrowable.getLocalizedMessage());
            }
        });
    }
}
2020-10-20