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