В документации Android для Loaders, найденной в http://developer.android.com/guide/components/loaders.html, говорится, что одно из свойств загрузчиков заключается в следующем:
Они автоматически подключаются к последнему курсору загрузчика при воссоздании после изменения конфигурации. Таким образом, им не нужно повторно запрашивать свои данные.
Следующий код, похоже, не отражает это поведение, создается новый Loader, заканчивается запрос ContentResolver, затем я поворачиваю экран и восстанавливается Загрузчик!
public class ReportFragment extends Fragment implements LoaderCallbacks<Cursor> {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getLoaderManager().initLoader(1, null, this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_report, container, false);
return v;
}
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
Log.d("TEST", "Creating loader");
return new CursorLoader(getActivity(), ResourcesContract.Reports.CONTENT_URI, null, null, null, null);
}
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
Log.d("TEST", "Load finished");
}
public void onLoaderReset(Loader<Cursor> arg0) {
}
}
Вот результат моего логарифма:
08-17 16:49:54.474: D/TEST(1833): Creating loader
08-17 16:49:55.074: D/TEST(1833): Load finished
*Here I rotate the screen*
08-17 16:50:38.115: D/TEST(1833): Creating loader
08-17 16:50:38.353: D/TEST(1833): Load finished
Любая идея, что я делаю неправильно здесь?
EDIT:
Я должен отметить, что я строю Android Google API версии 8 и использую библиотеку поддержки v4.
2nd EDIT:
Это, скорее всего, связано с ошибкой в библиотеке поддержки, посмотрите эту отправку ошибок, если вы хотите получить дополнительную информацию: