如何防止Android应用程序因后台线程中的异常而崩溃?

Den*_*ich 14 java crash multithreading android exception

这是一个普遍的问题,从具体情况中提出,但我想得到一般答案如何处理以下情况:

背景:

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

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

有没有办法捕获所有非处理后台(非主要)线程异常,只是为了在这种情况下杀死线程,并防止应用程序崩溃?

相关问题

我看到了很多的几个问题,但有些过于具体(而不是覆盖我的情况),其他参考状况的时候,开发者对线程创建一个控制,并能包住整个线程与try/catch语句.如果我仍然错过相关问题,涵盖此案例,我将非常感谢这个链接

Roh*_*hit 14

您需要做的就是使用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());
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为最好将此代码放入自定义Application类中,因为它只能在应用程序的生命周期中运行一次 (3认同)
  • 将此添加到我的应用程序后,每当我的应用程序崩溃时,它会卡在黑屏上.请帮帮我 (3认同)