Kotlin: выполнение периодических периодических задач с учетом жизненного цикла с помощью LiveData и ViewModels - PullRequest
1 голос
/ 23 мая 2019

Мое приложение уже использует некоторые последние шаблоны Android для сетевых вызовов:

  • LiveData class
  • Архитектура MVVM с ViewModel class
  • Сопрограммы Kotlin дляКлассы репозитория
  • Retrofit интерфейс и т. Д.

Теперь я хочу реализовать общую функцию, которая заключается в автоматическом получении текущих данных из API каждые несколько минут .

Я прочитал о WorkManager и дал ему шанс - я реализовал это, но потом увидел, что WorkManager (JobScheduler) продолжает работать после закрытия приложения, а это не то, что я хочу.Мне также показалось, что WorkManager API слишком сложен для этой простой задачи.

Затем я прочитал руководство по Codepath, в котором предлагается класс Handler для повторяющихся заданий основного потока и ScheduledThreadPoolExecutor для фоновых повторяющихся задач.Я знаю, что они, вероятно, будут работать нормально, но я не уверен, что они являются лучшим решением.

Мой вопрос: каков на данный момент лучший способ для повторяющихся вызовов API, которые:

  • работает с классами LiveData и ViewModel (наблюдаемый результат, как при обычном вызове API)
  • является дружественным для Kotlin (каким-либо образом сделать сопрограмму повторяющейся?)
  • является "осведомленной о жизненном цикле",это означает, что он остановится, когда приложение перейдет в фоновый режим?

1 Ответ

0 голосов
/ 23 мая 2019

WorkManager предназначен для гарантированных работ, которые необходимо выполнить, даже если ваше приложение завершается или устройство перезагружается.Из вашего описания это не похоже на ваш вариант использования.

Пул потоков кажется лучшим вариантом в этом случае, но вы можете судить сами, начиная с этого руководства: " Фоновые задачи ".

...