Когда использовать Android Loaders

Погрузчики

  1. Контролировать источник данных и предоставлять новые результаты
  2. После изменения конфигурации: нет необходимости повторно запрашивать данные

Я прочитал руководство по Android для погрузчиков . Я прочитал учебник по 4 частям Алекса Локвуда. Протестировано и его примерное приложение . Пытался прочитать приложение Google для ввода-вывода 13, есть функция Stream и, прочитав ее код, выясняет, что он использует Loaders, поскольку он предоставляет код для создания StreamLoader . Вот ссылка, я полагаю, они используют ее для мониторинга новых данных и добавления их в их представление.

То же самое для приложения Alex. Наблюдатель и когда появляются новые записи данных, запускается обновление для пользовательского интерфейса.

Пока мне кажется, погрузчики – идеальный выбор для приложения «lifecore». Когда появляется новое обновление (что означает новый ввод данных), оно появляется на вашем экране.

Может быть, что-то вроде Twitter. Новые сообщения для вас, пользовательский Observer для заметок на изменения, пользовательский Loader приносит данные и адаптер для их отображения. Не нужно «подтягивать-обновлять». Но опять же у Твиттера есть свой собственный RESTful API, который делает то же самое. Не требуется указатель на новые данные. (Не знаю, как они это делают, но я думаю, как-то «нажимать» новые данные на ваше устройство).

Поэтому мой вопрос:

Погрузчики – лучший вариант, когда мы хотим наблюдать за источником данных и изменять наш вид, чтобы он отображал новые данные?

Есть ли примеры / приложение, которое я могу проверить, имея дело с этой логикой: контролировать источник данных -> получить данные -> обновить интерфейс

Любые характерные случаи (такие, как ранее упомянутый мной «lifecore»), что, когда нам приходится иметь дело с ними, мы должны выбрать Loaders?

Вторая часть Loaders (изменение конфигурации, сохранение данных), я думаю, это ясно. Никто не хочет повторно загружать галерею изображений, когда пользователь поворачивает устройство.

Благодарю вас и извиняюсь за мое замешательство

Solutions Collecting From Web of "Когда использовать Android Loaders"

Лучший способ описать загрузчик – это обработчик, который всегда включен. Оба загрузчика и обработчики передают данные между объектами.

Я согласен с тем, что вы сказали о приложении «lifecore». Loader контролирует источник данных и предоставляет новые результаты при изменении содержимого.

Чтобы ответить на ваши вопросы:

1) Погрузчики – лучший вариант, когда мы хотим наблюдать за источником данных и изменять наше представление, чтобы оно отображало новые данные?

A: Да. Если ваш источник данных постоянно обновляется. Например, как приложение для акций. Если ваши данные не постоянно обновляются, то нет, не используйте загрузчик. Например, если ваш источник данных извлекается только один раз, тогда нет необходимости в загрузчике.

2) Есть ли примеры / приложение, которые я могу проверить, имея дело с этой логикой: контролировать источник данных -> получить данные -> обновить интерфейс

A: https://www.youtube.com/watch?v=3d9BeWqlfTk

Да, это то, что вы хотите использовать для потока, который вы описываете. Тангенциально есть также AsyncTasks и Services, которые имеют сходство.

AsyncTasks

Описание (из документов):

AsyncTask разработан как вспомогательный класс вокруг Thread и Handler и не представляет собой общую структуру потоков. AsyncTasks идеально подходит для коротких операций (всего несколько секунд).

Внимание. Еще одна проблема, с которой вы можете столкнуться при использовании рабочего потока, – это непредвиденные перезагрузки в вашей деятельности из-за изменения конфигурации среды выполнения (например, когда пользователь меняет ориентацию экрана), что может привести к уничтожению рабочего потока. Чтобы узнать, как вы можете сохранить свою задачу во время одной из этих перезапусков и как правильно отменить задачу при уничтожении действия, см. Исходный код для примера приложения Shelves.

Если вы просто хотите, чтобы оболочка использовала базовый шаблонный шаблон, используйте AsyncTask, иначе я бы предложил вам использовать AsyncTaskLoader, если вам нужен универсальный способ запуска интенсивных операций в Activity или Fragment. Вы получаете те же преимущества от AsyncTask, но при этом справляетесь с проблемами жизненного цикла. Существуют также специальные погрузчики, такие как CursorLoader, которые будут обрабатывать конкретные источники данных и иметь удобства для взаимодействия с определенными элементами пользовательского интерфейса.

Сервисы

Описание (из документов):

Служба – это компонент приложения, который может выполнять длительные операции в фоновом режиме и не предоставляет пользовательский интерфейс. Другой компонент приложения может запустить службу, и он будет продолжать работать в фоновом режиме, даже если пользователь переключится на другое приложение. Кроме того, компонент может связываться с сервисом для взаимодействия с ним и даже выполнять межпроцессную связь (IPC). Например, служба может обрабатывать сетевые транзакции, воспроизводить музыку, выполнять ввод / вывод файлов или взаимодействовать с поставщиком контента, все из фона.

Вы будете использовать службу для обработки данных, которые будут перенесены на телефон. В противном случае пользователь должен будет открыть ваше приложение, чтобы получить какие-либо нажатые данные. Сервисы не взаимодействуют с вашим пользовательским интерфейсом. Таким образом, общий шаблон проектирования заключается в использовании Сервиса для сбора данных с сервера (будь то нажатие в реальном времени или если вы опросили) и сохраните его в своей базе данных для использования как при открытии приложения, так и при отсутствии. Есть много других случаев использования Служб, но этот, вероятно, самый популярный.

Заключение Итак, нет, вам не нужно использовать Loader для загрузки данных или выполнения длительных операций в фоновом потоке и передачи результатов (или прогресса) в поток пользовательского интерфейса, но они являются наилучшим вариантом для большинства случаев использования.