在App开发中,经常会遇到单独启动一个进程,用于在后台的任务操作,由于是单独的一个进程,所以主进程和子进程之间互不影响,这样有利有弊!利处肯定很多,比如存活周期不受影响,后台默默处理等等,但也有弊端!
一个明显的弊端就是:app的异常捕获问题!
由于是单独的进程,所以通常操作,在Application中进行捕获异常只能对于主进程的异常有影响,但是子进程的异常就无法捕获了,所以必须特别为子进程进行单独处理异常捕获的问题!
这里是我写的一个Service的进程单独进行异常捕获!关键代码如下:
public class CpuLocationService extends Service implements Thread.UncaughtExceptionHandler
{
……
@Override
public void onCreate()
{
super.onCreate();
//这里故意写了一段错误语句,一定会抛异常的,来进行代码测试的
int i=9/0;
LcbLog.e("i:"+i);
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
MobclickAgent.reportError(getApplicationContext(),ex);
}
……
}
因为我是用Umeng进行错误统计的,所以在该进程报错的时候,用umeng进行错误上报的,这样就捕获到了子进程的异常日志了!注意:主进程的错误捕获还是必不可少的,这里只作为一个补充!