Лучшие подходы для периодического обновления данных в Android - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть два случая, когда мне нужно обновить данные с веб-сервера, используя API в фоновом режиме.Для получения данных по запросу я использую судины okHttp и Kotlin.И теперь мне интересно, какие подходы являются лучшими, когда:

  1. У меня есть просмотр списка с данными с веб-сервера, и я хочу обновить его, скажем, каждые 10 секунд, когда приложение находится в этом определенном представлении,(Я думал об использовании для ex. Обработчика с runnable)
  2. Я хочу отобразить уведомление, когда некоторые данные изменятся определенным образом.В таком случае я думаю, что я должен использовать фоновый сервис?

С уважением,

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

ИМХО лучший подход - строить для офлайн: сохраняйте свой результат в постоянном хранилище (т.е. в комнате).Подпишитесь на результат запроса для вашей функции.Затем вы можете использовать новый JetMack WorkManager для регулярных обновлений (https://developer.android.com/topic/libraries/architecture/workmanager/).Вот слегка измененный фрагмент кода из документации:

val dataCheckBuilder =
       PeriodicWorkRequestBuilder<DataCheckWorker>(10, TimeUnit.SECONDS)
// ...if you want, you can apply constraints to the builder here...

// Create the actual work object:
val dataCheckWork = dataCheckBuilder.build()
// Then enqueue the recurring task:
WorkManager.getInstance().enqueue(dataCheckWork)
0 голосов
/ 22 ноября 2018

Возможно, вы ищете службы: https://developer.android.com/reference/android/app/Service

Вы можете думать о них как о фоновых процессах (хотя они немного отличаются). Они запускаются в фоновом режиме и взаимодействуют с другими компонентами Android, такими как уведомление.manager (https://developer.android.com/reference/android/app/NotificationManager).

Итак, по сути, вы захотите создать службу, которая будет проверять API каждую минуту или около того, а затем добавить уведомление менеджеру.

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