当我开始 Activity 时,在 onCreate() 之后调用 OnDestroy()

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

我正在更新 activity A 的 onDestroy() 中的本地数据库。Activity B 依赖于 [=27 的 onDestroy() 中更新的本地数据库=] A.

我的问题是,每当我开始 Activity B 并完成 Activity A activity A 的 onDestroy() 时,都会在 onCreate() 之后调用 Activity B. 由于这个问题,我丢失了销毁后存储的数据 Activity A.

我该如何解决这个问题?

Activity一个

@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();
}

Activity B

 @Override
protected void onCreate(Bundle savedInstanceState){

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

请删除 onCreate 中的 finish()Finish 正在摧毁你的 Activity 这就是为什么 onDestroy 被称为

您不能依赖 onDestroy() 的时间来保存您的更改。您应该在 onPause() 中保存更改,这是唯一保证被调用的生命周期方法。

此外,如果您想将数据从ActivityA传递到ActivityB,您可以使用以下方法之一:

  • 将数据存储在文件中
  • 将数据存储在 SQLite 数据库中
  • 将数据存储在SharedPreferences
  • 将数据放在Intent你用来启动ActivityB的“extras”中(前提是数据量不太大)