使用 onSaveInstanceState 防止第二次网络调用
Using onSaveInstanceState to prevent network call a second time
在我的 OnCreate 方法中,我进行网络调用并用结果填充列表视图。我将结果保存在 ArrayList 中并使用 ArrayList 填充列表视图。如果用户按下后退按钮并重新输入 activity 我想将 ArrayLists 存储在 SavedInstanceState Bundle 中并用存储的 ArrayLists 填充 ListView 而不是第二次进行网络调用。以下是我的 OnCreate 代码:
if (savedInstanceState != null) {
largeImage = savedInstanceState.getParcelableArrayList("Image");
flowercode = savedInstanceState.getStringArrayList("Code");
flowerprice = savedInstanceState.getStringArrayList("Price");
flowerdimensions = savedInstanceState.getStringArrayList("Dimension");
largeImageText = savedInstanceState.getStringArrayList("Imagetext");
ListView listView = (ListView) findViewById(R.id.LowRomance);
FlowerShopAdapter listAdapter = new FlowerShopAdapter(this, flowercode, flowerName, flowerprice, largeImage, flowerdimensions);
listView.setAdapter(listAdapter);
} else if(savedInstanceState == null) {
makesoapcall();
}
}
这是我的 OnSaveInstanceState 代码
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putParcelableArrayList("Image", largeImage);
savedInstanceState.putStringArrayList("Code", flowercode);
savedInstanceState.putStringArrayList("Price", flowerprice);
savedInstanceState.putStringArrayList("Dimension", flowerdimensions);
super.onSaveInstanceState(savedInstanceState);
}
目前我的应用程序每次都在进行网络调用。他们是我需要实施的其他东西才能让它发挥作用,还是他们在我试图实施这个的当前方式中出现错误?当我将它们放入 savedInstanceState 时,ArrayList 绝对不为空。
当在 Activity 上按下后退按钮时,不应调用 onSaveInstanceState()
。当 Android 决定销毁 Activity.
时调用
例如当方向改变时。
这里需要的是SharedPreferences. Store the ArrayLists
using SharedPreferences in onStop()
. And get it in onStart()
. Here如何在SharedPreferences中存储ArrayList
在我的 OnCreate 方法中,我进行网络调用并用结果填充列表视图。我将结果保存在 ArrayList 中并使用 ArrayList 填充列表视图。如果用户按下后退按钮并重新输入 activity 我想将 ArrayLists 存储在 SavedInstanceState Bundle 中并用存储的 ArrayLists 填充 ListView 而不是第二次进行网络调用。以下是我的 OnCreate 代码:
if (savedInstanceState != null) {
largeImage = savedInstanceState.getParcelableArrayList("Image");
flowercode = savedInstanceState.getStringArrayList("Code");
flowerprice = savedInstanceState.getStringArrayList("Price");
flowerdimensions = savedInstanceState.getStringArrayList("Dimension");
largeImageText = savedInstanceState.getStringArrayList("Imagetext");
ListView listView = (ListView) findViewById(R.id.LowRomance);
FlowerShopAdapter listAdapter = new FlowerShopAdapter(this, flowercode, flowerName, flowerprice, largeImage, flowerdimensions);
listView.setAdapter(listAdapter);
} else if(savedInstanceState == null) {
makesoapcall();
}
}
这是我的 OnSaveInstanceState 代码
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putParcelableArrayList("Image", largeImage);
savedInstanceState.putStringArrayList("Code", flowercode);
savedInstanceState.putStringArrayList("Price", flowerprice);
savedInstanceState.putStringArrayList("Dimension", flowerdimensions);
super.onSaveInstanceState(savedInstanceState);
}
目前我的应用程序每次都在进行网络调用。他们是我需要实施的其他东西才能让它发挥作用,还是他们在我试图实施这个的当前方式中出现错误?当我将它们放入 savedInstanceState 时,ArrayList 绝对不为空。
onSaveInstanceState()
。当 Android 决定销毁 Activity.
例如当方向改变时。
这里需要的是SharedPreferences. Store the ArrayLists
using SharedPreferences in onStop()
. And get it in onStart()
. Here如何在SharedPreferences中存储ArrayList