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

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

转载于:https://my.oschina.net/u/2459282/blog/1605301

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值