Articles of android loader

Почему onLoadFinished вызывается снова после возобновления фрагмента?

У меня особенная проблема с Loaders. В настоящее время я не уверен, что это ошибка в моем коде или я неправильно понимаю загрузчиков. Приложение Проблема возникает из-за разговоров (представьте что-то похожее на Whatsapp). Используемые загрузчики реализованы на основе примера AsyncTaskLoader . Я использую библиотеку поддержки. В OnCreate я запускаю загрузчик для получения кэшированных сообщений. Когда […]

В чем преимущество загрузчиков через Asynctask в Android?

Есть ли преимущества Loaders над задачей Async? Также, как сделать загрузчики совместимыми для телефонов с Android froyo. Редактировать: Основная проблема здесь в том, что я не использую собственный DB (SqlLite). Использование БД на сервере разработки. Очевидно, я больше не могу использовать CursorLoader . AsyncTaskLoader не имеет примеров вообще. Если есть, пожалуйста, сделайте ссылку. Лучше ли […]

Погрузчик поставляет результат в неправильный фрагмент

У меня есть активность с прокручиванием вкладок с помощью вкладок ActionBar, основанных на примере разработчика Android . На каждой вкладке отображается фрагмент, и каждый фрагмент (на самом деле, Шерлок-Фрагмент) загружает другой вид удаленного запроса api через пользовательский AsyncTaskLoader. Проблема заключается в том, что если вы нажмете вкладку, чтобы переместить 2 вкладки / страницы, а фрагмент […]

Будет ли LoaderManager.restartLoader () всегда приводить к вызову onCreateLoader ()?

LoaderManager имеет этот метод restartLoader() : public abstract Loader<D> restartLoader (int id, Bundle args, LoaderCallbacks<D> callback) Запускает новый или перезапускает существующий загрузчик в этом менеджере, регистрирует обратные вызовы к нему и (если активность / фрагмент в настоящее время запущен) начинает его загружать. Если ранее был запущен загрузчик с тем же идентификатором, он будет автоматически уничтожен, […]

Должны ли загрузчики использоваться для доступа к веб-службам?

Насколько я понимаю, инфраструктура Loader предназначена для доступа к данным, хранящимся локально в базе данных ContentProvider / SQLite. У нас есть класс CursorLoader, который отлично справляется с этим вариантом использования. Но мне интересно, можно ли использовать среду Loader для написания классов, расширяющих Loader / AsyncTaskLoader для доступа к удаленным веб-службам (например, веб-службе REST)? Я всегда […]

Android Loader не запускает обратные вызовы на экране.

Я использую AsyncTaskLoader . У меня есть активность, которая реализовала LoaderCallbacks (Библиотека поддержки). Я отлаживаю onLoadFinished останова и помещаю в журналы, загрузчик поставляет результат, однако второй раз обратный вызов onLoadFinished не запускается. Странная вещь – когда я поворачиваюсь назад, она работает, и я всегда начинаю получать обратные вызовы, когда вернусь к ней. В моей деятельности […]

Данные не синхронизированы между пользовательским CursorLoader и CursorAdapter, поддерживающим ListView

Задний план: У меня есть пользовательский CursorLoader который работает непосредственно с SQLite Database вместо использования ContentProvider . Этот загрузчик работает с ListFragment поддерживаемый CursorAdapter . Все идет нормально. Чтобы упростить ситуацию, предположим, что в пользовательском интерфейсе есть кнопка «Удалить». Когда пользователь нажимает на это, я удаляю строку из БД, а также вызываю onContentChanged() на моем […]

LoaderManager с несколькими загрузчиками: как получить правильный загрузчик курсора

Для меня неясно, как получить правильный курсор, если у вас несколько Loaders. Допустим, вы определили два разных загрузчика: getLoaderManager().initLoader(0,null,this); getLoaderManager().initLoader(1,null,this); То в onCreateLoader () вы делаете разные вещи в зависимости от id: @Override public Loader<Cursor> onCreateLoader(int id, Bundle arg1) { if (id==0){ CursorLoader loader = new CursorLoader(getActivity(), MaterialContentProvider.CONTENT_URI,null,null,null,null); }else{ CursorLoader loader = new CursorLoader(getActivity(), CustomerContentProvider.CONTENT_URI,null,null,null,null); […]