簡體   English   中英

應用程序清除數據時如何從啟動中重新啟動應用程序

[英]How to restarts the app from splash when app clears data

當我將我的應用程序保留在最近的應用程序中大約 30 分鍾以上時,30 分鍾后我從最近的應用程序中打開同一個應用程序。 當我嘗試在一段時間后打開相同的應用程序時,它會打開相同的 Activity 或 Fragment,但數據正在被清除,因此它實際上會重新啟動相同的 Fragment 或 Activity。 我無法在應用程序 Android 7.0+ 設備中的片段中保留數據,但在 Android 6 設備下工作正常所以,我怎么知道應用程序的生命周期,所以我該如何處理,以便我可以從頭開始重新啟動應用程序。

這是 Android 中的常見問題。 一種方法是檢查您的數據是否存在。 就像是:

 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myModel = new MyModel();
    //...
}

@Override
protected void onResume() {
    super.onResume();
    if (myModel == null) { //This means your activity is resumed after a period of time.
        finishAffinity();
        Intent i = new Intent(this, MainActivity.class);
        startActivity(i);
    }
}

這將起作用,但是這不是解決此類問題的確切方法。 順便說一句,您需要考慮一些問題,例如調用finishAffinity()時整個應用程序會發生什么。 更好的解決方案在於savedInstanceState 您可以在銷毀時保存 Activity/Fragment 的 state,並在娛樂時恢復:

 @Override
public void onSaveInstanceState(Bundle outState) {
   outState.putString("data", "data to be saved");
   super.onSaveInstanceState(outState);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
        String data = savedInstanceState.getString("data");
        //Use the data to restore your Fragmetn/Activity
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM