App進程被系統殺死以後 從新進去App崩潰public class BAAppStatusManager { public static BAAppStatusManager mInsta

App在後臺時間長以後 會被系統自動清除 當咱們再次進入app的時候 會發現程序會崩潰java

當應用被強殺,整個App進程都是被殺掉了,全部變量全都被清空了。包括Application實例。更別提那些靜態變量了。app

按照這種邏輯 咱們能夠經過變量爲空的方式來處理當app被殺掉後 重啓appide

首先建立一個BAAppStatusManager的類,具體代碼以下this

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值code

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方法以前進行設置get

這樣的話 當app在後臺被系統殺掉進程以後 打開app以後 會重啓appit

相關文章
相關標籤/搜索