我有 Activity A。它显示通过在 onCreate 中调用 void loadData() 从服务器检索的一些数据。
用户单击一个按钮,为结果打开一个新的 Activity B。完成后返回 Activty A。onActivtyresult 应该调用 loadData() 以重新加载数据。
当 Activty B 完成时,作为 A 调用的 onCreate 和 onActivityResult 都被销毁。这对我来说不好。
问题是:
Dose Activity A 总是会被销毁并调用 onCreate 吗?这是否记录在案,因为我找不到任何关于此的信息。如果是这种情况,那么我将仅在 onCreate 中调用 loadData。
如果不是,我也必须从 onActivityResult 调用 loadData,这在某些情况下再次导致调用 loadData 2 次,这是我不想要的。
A 类:
public void onCreate(@Nullable Bundle bundle) { .... creation code loadData(); // will be called first time activity created as well when back from the activity B } public void createNew() { Intent createService = new Intent(this,CreateService.class); startActivityForResult(createService, 1001); overridePendingTransition(R.anim.out_top,R.anim.fp); } public void onActivityResult(int i, int i2, Intent intent) { super.onActivityResult(i, i2, intent); if (i2 != -1) { loadData(); ///will be called when back from Activty B } }
B 类:
public void on taskFinish() { setResult(1); finish(); overridePendingTransition(R.anim.s_right, R.anim.s_in_right); }
最佳答案
我已经有了这样的解决方法
boolean loaded = false;
void onCreate() {
loadData();
loaded=true;
}
public void createNew() {
loaded = false; /// Set before start the new Activity
Intent createService = new Intent(this,CreateService.class);
startActivityForResult(createService, 1001);
overridePendingTransition(R.anim.out_top,R.anim.fp);
}
public void onActivityResult(int i, int i2, Intent intent) {
super.onActivityResult(i, i2, intent);
if (i2 != -1) {
if (!loaded) {
loadData();
loaded = true;
}
}
}
我有2个扫描
1- Activity 创建形式 scrach- loadData 将在 OnCrate() 中调用一次
2- 为结果启动新 Activity - 设置 loaded = false
a- 返回结果后,如果 Activity 被销毁,则在 onCreate 中加载 == true 并且 loadData 将被调用一次。然后将调用 onActivityResult 但不会调用 loadData。
b- 返回结果后如果 Activity 没有被销毁然后 loaded = false 和 将调用 loadData
关于java - 当我完成结果的 Activity 时调用 OnCreate 和 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59434982/