这是一个一般性问题,是从特定场景提出的,但我想得到一个一般性的答案如何处理以下情况:
背景:
我有一个应用程序,它正在使用一些第 3 方库(广告网络提供商 SDK - 特别是 - AdMob
SDK,基于 Google Play Services
)。该库的功能对于应用程序并不重要。该库创建一个或多个后台工作线程。有时(非常罕见的情况)在这些后台线程之一中存在未处理的异常,导致应用程序崩溃。我想忽略由这个库引起的所有异常,不管它们的原因是什么:在最坏的情况下,应用程序用户将看不到广告——这比应用程序崩溃要好得多。
由于库本身会创建后台线程 - 我不能只用 try/catch 包装它们。
问题
有没有办法捕获所有未处理的后台(非主)线程异常,并在这种情况下终止线程,并防止应用程序崩溃?
相关问题
我看到了很多问题,但其中一些过于具体(并且没有涵盖我的情况),其他问题指的是开发人员可以控制线程创建并且能够用 try/包装整个线程的情况捕获。如果我仍然错过了相关问题,涵盖了这个案例,我将不胜感激链接
最佳答案
您需要做的就是使用 BaseActivity 扩展所有 Activity 。该应用程序在任何时候都不会崩溃
BaseActivity 的代码 fragment :
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());
}
});
}
}
关于java - 如何防止android应用程序因后台线程异常而崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22978245/