其实写这边文章之前,一直在考虑要不要标注为原创,因为全局异常捕获的机制,自己也是看了别人的文章学来的,百度全局异常捕获,出来的也都是一模一样的内容,只是博客位置不一样而已。但是最后要是决定标准为原创,因为网上的那些全局异常捕获的文章,虽然交代了如何去处理全局异常捕获,但是却没有完美的处理捕获异常之后该做的事情。既没有完美的退出程序。博主在使用网上提供的全局捕获异常之后,不是ANR就是只退出了报错的那个ACTIVITY,没有达到真正的闪退处理。这让博主非常的苦恼,于是博主研究了一天,终于找到了完美退出APP的方法。下面来和大家一起分享。
一、Application的生命周期
在说如何完美退出APP之前,我们先来讲讲Application的生命周期.
1、onCreate,app启动的主入口,程序启动的时候调用
@Override
public void onCreate() {
super.onCreate();
}
2、onTerminate() app停止的时候执行的方法,但并不一定会调用。当虚拟机为别的应用程序腾出更大资源空间而终止当前应用程序的时候,是不会执行该方法的。
public void onTerminate() {
super.onTerminate();
System.exit(0);
}
3、onLowMemory()当后台程序已经终止资源还匮乏的时候,会调用这个方法,一般的程序会在这里释放一些不必要的资源
@Override
public void onLowMemory() {
super.onLowMemory();
}
4、onConfigurationChanged(Configuration newConfig),当配置改变时调用的方法
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
看完application的生命周期之后,想必大腿对于APP的启动和退出有了一个大概的认识。我们常说activity,fragment,service,BroadcastReceiver的生命周期,但却很少去了解application的生命周期。其实google设计的这个application类有很大的用处。一般来说,application代表整个应用程序,所以它就是一个全局变量,所有的公共变量、需要全局传递的数值都可以通过application来达到目的。而在activiiy中或者其他地方,我们都可以通过getApplication()或者mContext.getApplicationContext()来拿到application的实例。在这里不在描述过多,网上百度可以找到很多的相关信息。好了,下面进入正题