多久从服务器重新获取数据?

Posted

技术标签:

【中文标题】多久从服务器重新获取数据?【英文标题】:How often to refetch data from server? 【发布时间】:2019-01-26 17:39:30 【问题描述】:

我有一个片段,显示的数据是从网络调用中获取的。 我使用onSaveInstanceState 是为了避免在方向改变时再次获取数据,但是如果我正确理解片段的生命周期,只要应用程序永远不会被破坏(用户显式或因为 android 操作系统终止活动由于缺乏资源)来自服务器的数据永远不会被刷新。 如果我正确理解了这部分,我需要定义一些方法来定期从服务器重新获取数据,还是有其他方法?

【问题讨论】:

【参考方案1】:

没有关于数据刷新的规则。这取决于您的应用程序、您的数据等。如果您获取收据列表,则不需要实现刷新机制。但是,如果您获取货币的汇率,我不知道,您必须有一个。

拉动刷新模式怎么样?

【讨论】:

但我是对的,数据只会在应用程序重启时按照我描述的方式刷新? 这取决于你在哪里进行网络调用:在 onResume() 中,每次显示片段/活动时都会进行调用;在 onCreate() 中,每次创建时 但是如果我这样做 onResume 那么它不会在每次方向更改时触发吗? 是的,它会被解雇。改用 onCreate()savedInstanceState 但是我不会有同样的问题吗?仅在每次应用重启时更新?【参考方案2】:

我会使用 Android 架构组件 ViewModel 和 LiveData 在屏幕旋转期间保存数据,以防止多次调用服务器以更改屏幕旋转。这是谷歌似乎向他们的开发者推销的首选方法https://developer.android.com/topic/libraries/architecture/saving-states

为了防止数据过时,我要么让用户决定何时使用“Pull to Update”(如另一个答案中所述)进行更新,要么添加一个计时器来更新如果片段已经在前台使用此处描述的方法延长一段时间:https://guides.codepath.com/android/Repeating-Periodic-Tasks

【讨论】:

你有add a timer to update if the fragment has been in the foreground....的示例代码吗? 我已经编辑了我的答案以包含一个定期更新的示例。

以上是关于多久从服务器重新获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

Meteor 集合获取返回空数组但已订阅

如何在 React Apollo 2.0 中正确地重新获取和缓存更新的数据?

从服务器获取数据时如何使用 typealias

在我刷新数据库连接之前,Mongoose 不会获取数据

从剪贴板获取数据并重新设置 - WINAPI,C [重复]

存储数据后是不是有更好的方法从 localStorage 获取数据而不刷新/重新加载页面