App进程被系统杀死之后 重新进去App崩溃public class BAAppStatusManager { public static BAAppStatusManager mInsta

2018-01-11 13:13:22来源:oschina作者:whitemine人点击

分享

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

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台