当我开始 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”中(前提是数据量不太大)
我正在更新 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”中(前提是数据量不太大)