У меня есть активность, которая расширяет FragmentActivity
В первом фрагменте (HomePage, который расширяет фрагмент) мне нужно загрузить данные из Интернета, поэтому я использую ASyncTask.
Теперь проблема: мне не нужно проверять и загружать данные каждый раз, когда фрагмент создается/прикрепляется
но только в первом случае я хочу сохранить состояние и снова загрузить данные только для следующего действия onCreate (надеюсь, это означает следующее открытие приложения, но мы знаем, что это не так)
Итак... Куда мне поместить мой ASyntTask.execute()? OnCreate внутри фрагмента? OnCreateView внутри фрагмента? При прикреплении внутри фрагмента? или OnCreate of Activity, сохранять данные в Bundle и затем передавать их моему фрагменту?
Или, может быть, другие решения для этого?
ИЗМЕНИТЬ
Решено!
Итак, в моем OnCreate [Fragment] я добавил
if(savedInstanceState != null) {
data = (data[]) savedInstanceState.getParcelableArray("key");
}
else
new LoadMostBooks().execute();
Но я не установил InstanceRetain(True), потому что мне нужно всегда проходить через onCreate();
Затем в методе onCreateView() я добавил также проверку
if(savedInstanceState != null) {
myCustomArrayAdapter = new CustomArrayArrayAdapter(mContext,data);
myListView.setAdapter(myCustomArrayAdapter);
}
Мне также нужно было убедиться в сохранении экземпляра с
@Override
public void onSaveInstanceState( Bundle outState ) {
super.onSaveInstanceState( outState );
outState.putParcelableArray("key",data);
}
В конце концов мне пришлось сделать данные (пользовательский объект) реализованными Parcelable, чтобы убедиться, что все работает!