我试图建立一个全球性的异常处理服务在提到这个答案 。 因为在崩溃后,在我的自定义代码这种做法听起来合乎逻辑Thread.UncaughtExceptionHandler
可能无法成功执行,要么是因为应用程序可能无法在一个稳定的状态,或者因为之前的过程是由OS杀死可能没有足够的时间。
不幸的是,这种方法似乎并不工作,因为该服务在同一进程,因此,也被杀害启动。 我怎样才能从处理程序的启动服务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);
该服务在declated AndroidMaifest.xml
文件,并在程序的任何地方启动的罚款。