这是一个普遍的问题,是从特定情况提出的,但我想获得一个一般性的答案,说明如何处理以下情况:
背景:
我有一个应用程序,它在使用一些第三方库(广告网络提供商SDK-特别是- AdMob基于SDK Google Play Services)。该库的功能对于应用程序并不重要。该库创建一个或多个后台工作线程。有时(非常罕见的情况),这些后台线程之一存在未处理的异常,导致应用程序崩溃。我想忽略由该库引起的所有异常,无论其原因如何:在最坏的情况下,应用程序用户将看不到广告- 这比应用程序崩溃要好得多。
AdMob
Google Play Services
由于库本身创建了后台线程-我不能仅通过try / catch来包装它们。
题
有什么方法可以捕获所有未处理的后台(非主线程)线程异常,并在这种情况下只是杀死线程并防止应用程序崩溃?
相关问题
我看到了很多问题,但是其中一些问题过于具体(无法涵盖我的情况),其他问题是指开发人员可以控制线程创建并能够使用try / catch包装整个线程的情况。如果我仍然错过了涉及此案的相关问题,请点击链接
您需要做的就是使用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()); } }); } }