Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中定期刷新数据的最佳方法_Android_Kotlin - Fatal编程技术网

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

Android中定期刷新数据的最佳方法,android,kotlin,Android,Kotlin,我有两种情况需要在后台使用API从Web服务器更新数据。为了根据请求获取数据,我使用okHttp和Kotlin courtines。现在我想知道哪种方法是最好的,什么时候: 我有一个包含来自webserver的数据的listview,我想在应用程序处于某个视图时更新它,比方说每10秒更新一次。(我正在考虑将for ex.handler与runnable一起使用) 我想在某些数据将以某种方式更改时显示通知。在这种情况下,我认为我应该使用后台服务 关于,您可能正在寻找服务: 您可以想象这些类似于后台

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

  • 我有一个包含来自webserver的数据的listview,我想在应用程序处于某个视图时更新它,比方说每10秒更新一次。(我正在考虑将for ex.handler与runnable一起使用)
  • 我想在某些数据将以某种方式更改时显示通知。在这种情况下,我认为我应该使用后台服务
    关于,

    您可能正在寻找服务:

    您可以想象这些类似于后台进程(尽管它们有点不同)的进程,它们在后台运行,并与其他Android组件(如notification manager())交互


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

    IMHO最佳方法是为脱机构建:将结果存储在持久性存储(即文件室)中。订阅功能的查询结果。然后,您可以使用新JetPack的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)
    
    val数据检查生成器=
    PeriodicWorkRequestBuilder(10,时间单位秒)
    //…如果需要,可以在此处对生成器应用约束。。。
    //创建实际工作对象:
    val dataCheckWork=dataCheckBuilder.build()
    //然后将定期任务排队:
    WorkManager.getInstance().enqueue(dataCheckWork)
    
    服务被弃用,取而代之的是WorkManager post API 29