Kotlin:使用LiveData和ViewModels感知生命周期的周期性周期性任务执行

时间:2019-05-23 14:21:47

标签: android kotlin android-architecture-components android-workmanager kotlin-coroutines

我的应用程序已经使用一些最新的Android模式进行网络通话:

  • LiveData
  • 具有ViewModel类的MVVM体系结构
  • 存储库类的Kotlin协程
  • Retrofit界面等。

现在,我要实现一项常见功能,即每隔几分钟自动从API中自动获取当前数据。

我了解了WorkManager并试了一下-我实现了它,但随后我发现WorkManagerJobScheduler)在关闭我不想要的应用程序后仍然可以运行。我还觉得WorkManager API对于这个简单的任务来说太过分了。

然后,我在Codepath上读了一个guide,其中建议Handler类用于主线程重复性作业,而ScheduledThreadPoolExecutor建议用于后台重复性任务。我知道它们可能会正常工作,但是我不确定它们是否是最佳解决方案。

我的问题是:当前循环API调用的最佳方法是什么?

  • 使用LiveDataViewModel类(可观察到的结果,如正常的API调用)
  • 科特林友好吗(可以使协程复发吗?)
  • 是否具有“生命周期意识”,这意味着当应用程序进入后台时它将停止?

1 个答案:

答案 0 :(得分:0)

WorkManager用于保证需要执行的工作,即使您退出应用或重新启动设备也是如此。从您的描述来看,这似乎不是您的用例。

在这种情况下,线程池似乎是最好的选择,但是您可以从本指南“ Background Tasks”开始判断自己。