簡體   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