Должен ли я использовать фрагменты, чтобы получить LoaderManager?

Согласно некоторым документам, я могу использовать Loader в Activity или Fragment, но пакет Compatibility показывает, что только FragmentActivity имеет метод getLoaderManager().

Так как старый управляемый курсор устарел, мы должны использовать Cursor Loader. Так почему же эта функция управления данными должна быть связана с выбором виджетов пользовательского интерфейса? Это не имеет никакого смысла для меня.

спасибо П.

2 ответа

Так как старый управляемый курсор устарел, мы должны использовать Cursor Loader.

Нет, управляемые курсоры все еще работают. Обычно "не рекомендуется" в Android означает "мы будем поддерживать этот механизм так долго, как сможем, но мы думаем, что есть лучшие варианты".

Так почему же эта функция управления данными должна быть связана с выбором виджетов пользовательского интерфейса?

Это не. Вам не нужно использовать фрагменты для наследования от FragmentActivity, Вы также можете создать свой собственный LoaderManagerCapableActivityгде вы клонируете соответствующие элементы данных и методы из FragmentActivity (исходный код находится на вашем жестком диске). Тем не мение, LoaderManager должен быть связан с действием, потому что оно связано с жизненным циклом действия, как и управляемые курсоры. Например, LoaderManager экземпляры передаются между действиями через onRetainNonConfigurationInstance(),

Да, для того, чтобы получить loaderManager, он должен быть связан с действием, однако можно использовать загрузчики без необходимости в loaderManger.

1) Реализовать AsynTaskLoader.
2) Создайте загрузчик, который вы внедрили в своем классе.
3) Зарегистрируйте прослушиватель для вашего загрузчика, чтобы вы получили обратный вызов после завершения загрузки.
4) Вызвать метод startLoading загрузчика.
5) После завершения загрузки будет вызван метод обратного вызова, в котором вы можете использовать загруженные данные для любых целей.

Другие вопросы по тегам