繁体   English   中英

Android Jetpack:使用 LiveData 和 ViewModel 执行生命周期感知的周期性任务

[英]Android Jetpack: lifecycle-aware recurrent periodic task execution with LiveData and ViewModels

我的应用程序已经使用了一些最近的 Android 模式进行网络调用:

  • LiveData
  • 带有ViewModel类的 MVVM 架构
  • 存储库类的 Kotlin 协程
  • Retrofit接口等

现在我想实现一个共同的功能,即每隔几分钟自动从 API 获取当前数据。

我阅读了WorkManagerJobScheduler了一下 - 我实现了它,但后来我看到WorkManager ( JobScheduler ) 在关闭应用程序后继续运行,这不是我想要的。 我也觉得WorkManager API 对于这个简单的任务来说太过分了。

然后我读了一个关于 Codepath 的指南,它建议主线程重复性工作的Handler类和后台重复性任务的ScheduledThreadPoolExecutor 我知道它们可能会正常工作,但我不确定它们是否是最佳解决方案。

我的问题是:目前循环 API 调用的最佳方法是:

  • 适用于LiveDataViewModel类(可观察到的结果,如普通 API 调用)
  • 是 Kotlin 友好的(有什么方法可以让协程循环?)
  • 是“生命周期感知”,这意味着当应用程序进入后台时它会停止吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM