在Android中定期刷新数据的最佳方法

时间:2018-11-21 21:42:17

标签: android kotlin

我有两种情况需要在后台使用API​​从Web服务器更新数据。为了根据请求获取数据,我使用okHttp和Kotlin的Courtines。现在,我想知道哪种方法最好,何时:

  1. 我有一个列表视图,其中包含来自网络服务器的数据,并且我想每隔10秒更新一次,例如当应用程序处于该特定视图中时。 (我当时正在考虑使用可运行的前处理程序)
  2. 我想在某些数据将以某些特定方式更改时显示通知。在那种情况下,我认为我应该使用后台服务?

关于

2 个答案:

答案 0 :(得分:0)

您可能正在寻找服务:https://developer.android.com/reference/android/app/Service

您可以想到这些类似于后台的进程(尽管有些不同),它们在后台运行并与其他Android组件(如通知管理器(https://developer.android.com/reference/android/app/NotificationManager)进行交互。

因此,从本质上讲,您将希望创建一个服务来每分钟左右检查一次API,然后向管理器添加通知。

答案 1 :(得分:0)

恕我直言,最好的方法是离线构建:将结果存储在永久存储区(例如Room)中。订阅您的功能的查询结果。然后,您可以使用新的JetPack的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)