我正在尝试设置此答案中提到的全局异常处理服务。这种方法听起来很合乎逻辑,因为在崩溃后,我自定义的代码Thread.UncaughtExceptionHandler
可能无法成功执行,要么是因为应用程序可能未处于稳定状态,要么是因为在进程被操作系统杀死之前可能没有足够的时间。
不幸的是,这种方法似乎不起作用,因为服务在同一个进程中启动,所以它也被杀死了。如何从处理程序启动服务uncaughtException()
?我可以强制服务以完全独立的过程启动吗?
我正在设置我的自定义默认(VM 级别)异常处理程序,Application
如下所示:
public class MyApp extends Application {
@Override
public void onCreate() {
Thread.setDefaultUncaughtExceptionHandler(
MyExceptionReporter.getInstance(this));
...
在我的自定义处理程序中,我正在启动这样的服务:
final Intent i = new Intent(MyExceptionService.INTENT);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra(MyExceptionService.EXTRA_STACK_TRACE,
Log.getStackTraceString(ex));
mContext.startService(i);
该服务在AndroidMaifest.xml
文件中进行了说明,并从应用程序的其他地方正常启动。