问题描述:
由于Android内存管理机制,运行在后台app难免部分内存被回收,再次打开app的的时候,空指针异常,导致app崩溃,即使是微信也是难免的,有时候发现运行在后台的微信,再次打开确实重新启动了,这个做法也是值得效仿的。下面我给出比较简单的解决方案。
1.提升应用级别,减缓被系统回收,在配置清单添加如下一句话android:persistent="true"
".MyApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/logo"
android:label="@string/app_name"
android:roundIcon="@mipmap/logo"
android:supportsRtl="true"
android:persistent="true"
android:theme="@style/AppTheme">
2.在application添加一个静态变量,比如status=0,在oncreate的时候改为1,在baseActivity 的onresume方法中判断是否被回收了,进行重启app
Application
/**
* 判断是否被后台杀死
* @param context
*/
public static int status=0;
@Override
public void onCreate() {
super.onCreate();
status=1;
BaseActivity
@Override
protected void onResume() {
super.onResume();
//判断是否被后台杀死
if (MyApplication.status == 0) {
UIUtil.restartAPP(mContext, 100);
return;
}
注意:status这个变量只能一次地方修改,所有的activity都继承BaseActivity