簡體   English   中英

當我啟動 Activity 時,在 onCreate() 之后調用 OnDestroy()

[英]OnDestroy() is being called after onCreate() when I start Activity

我正在更新活動 A 的onDestroy() onDestroy()更新的本地數據庫。

我的問題是,每當我啟動 Activity B 並完成 Activity A 時,都會在 Activity B 的onCreate()之后調用 Activity A 的onDestroy() 。由於這個問題,我丟失了銷毀 Activity A 后存儲的數據。

我該如何解決這個問題?

活動一

@Override
protected void onCreate(Bundle savedInstanceState){

    //After retrieving User data
    //inside onclicklistener
    someButton.setOnClickLister( new View.OnClickListener() {
        public void onClick(View view) {
              finish();
              startActivity(this,FamilyInfoActivity.class);
        }
    }
}

@Override
protected void onDestroy(){
    localJson.setStatus(status);
    localDBUtil.setLocalJson(this,localJson,connectionId);
    super.OnDestroy();
}

活動B

 @Override
protected void onCreate(Bundle savedInstanceState){

    localJson = localDBUtil.getLocalJson(this,connectionId);
    
}

您不能依賴onDestroy()的時間來保存您的更改。 您應該將更改保存在onPause()中,這是唯一保證被調用的生命周期方法。

此外,如果要將數據從ActivityA傳遞到ActivityB ,可以使用以下方法之一:

  • 將數據存儲在文件中
  • 將數據存儲在一個 SQLite 數據庫中
  • 將數據存儲在SharedPreferences
  • 將數據放在你啟動ActivityBIntent中的“extras”中(僅在數據量不太大的情況下)

請刪除onCreate中的finish() Finish正在銷毀您的Activity這就是調用onDestroy的原因

暫無
暫無

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

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