我想避免在Fragment
旋轉過程中耗時的數據加載。避免在片段旋轉過程中耗時加載數據
public class WatchlistFragment extends SherlockListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState == null) {
data = getTimeConsumingData();
} else {
Log.i(TAG, "savedInstanceState is not null!");
// Avoid performing time consuming data operation during rotation changes.
// But I never have chance to reach here !?!?
data = savedInstanceState.getStringArray("data");
}
setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, data));
}
public String[] getTimeConsumingData() {
Log.i(TAG, "WatchlistFragment getTimeConsumingData");
return new String[] { "A", "B", "C"};
}
@Override
public void onSaveInstanceState(Bundle outState) {
Log.i(TAG, "WatchlistFragment onSaveInstanceState");
super.onSaveInstanceState(outState);
outState.putStringArray("data", data);
}
private String[] data = null;
private static final String TAG = WatchlistFragment.class.getSimpleName();
}
奇怪的是,在savedInstanceState
是onActivityCreated
總是空連我執行幾個旋轉。
請注意,我不喜歡使用setRetainInstance(true)
描述Android Fragments Retaining Data作者正在使用onSaveInstanceState
。只是我不知道爲什麼我的不工作。
你有完整的代碼示例嗎?當我嘗試將'setRetainInstance'設置爲true時,但每次旋轉時都會創建片段。奇怪的是 – 2013-02-25 11:02:03
。我有'setReatainInstance(true);'in'onActivityCreated'。不工作。將它移動到'onCreate'不起作用。 – 2013-02-25 11:21:53