App在后台时间长之后 会被系统自动清除 当我们再次进入app的时候 会发现程序会崩溃
当应用被强杀,整个App进程都是被杀掉了,所有变量全都被清空了。包括Application实例。更别提那些静态变量了。
按照这种逻辑 我们可以通过变量为空的方式来处理当app被杀掉后 重启app
首先创建一个BAAppStatusManager的类,具体代码如下
public class BAAppStatusManager {
public static BAAppStatusManager mInstance = null;
private int appStatus = AppStatusConstant.APP_FORCE_KILLED;
public static BAAppStatusManager getInstance() {
if(mInstance==null) {
synchronized (BAAppStatusManager.class) {
if(mInstance==null)
mInstance = new BAAppStatusManager();
}
}
return mInstance;
}
public void setAppStatus(int appStatus) {
this.appStatus = appStatus;
}
public int getAppStatus() {
return appStatus;
}
public class AppStatusConstant {
public static final int APP_FORCE_KILLED = 0;
public static final int APP_NORMAL = 1;
}
}
我们在BaseActivity中判断app的status值
private void checkAppStatus() {
if(BAAppStatusManager.getInstance().getAppStatus() == BAAppStatusManager.AppStatusConstant.APP_FORCE_KILLED) {
//该应用已被回收,执行相关操作(下面有详解)
}
}
然后在栈底的activity中的oncreate方法中设置app的status值
@Override
protected void onCreate(Bundle savedInstanceState) {
BAAppStatusManager.getInstance().setAppStatus(BAAppStatusManager.AppStatusConstant.APP_NORMAL);
super.onCreate(savedInstanceState);
}
注意 要在super方法之前进行设置
这样的话 当app在后台被系统杀掉进程之后 打开app之后 会重启app