问题:假设我有一个返回JSON的Web服务,我将其反序列化为(列表)POJO(s),每个片段应该获取数据源的副本,还是我应该只将数据源保留在活动中,让片段通过回调接口(我在Attach()中设置)获取数据?或者还有另一种更好的方法?
为什么
我在Android上工作了一段时间,但我认为我仍然没有完全理解一些非常基本的原则,我希望你能帮助我澄清一些事情。在我的一个应用程序中,我使用Volley
调用返回 JSON 格式数据的 Web 服务。
我使用GSON
将 JSON 反序列化为 POJO。然后,我使用绿色机器人EventBus
发送新数据,以便我可以更新UI。目前,我的所有片段都注册为订阅者,每个片段存储对数据的引用。
我认为我做错了,因为如果当前未显示片段怎么办(它们在 onStop() 中从 EventBus 注销)。他们可能会错过模型的更新,当弹出 Backstack 时,他们可能会显示过时的模型,对吧?
那么,存储模型的最佳方法是什么,以便我的所有 UI 组件和控制器始终显示最新版本的模型?我担心一个或另一个组件(片段和/或活动)可能会错过更新,然后显示过时的数据。
Android 如何存储从 Web 服务检索到的模型并使其可供活动和片段访问?
我认为我的主要问题是我可以刷新多个活动和片段中的数据。例如,我可以在拉取刷新条目列表后重新加载数据,但重命名条目也会导致更新 - 但仅限于此特定条目。
你有没有想过使用 sqlite 来存储数据,然后显示它? 我要做的是:
-
以 json 形式从服务中获取数据
-
解析 json 并将其存储在 sqlite 表中
-
在需要时从 sqlite 表中读取
这样做的好处是,您可以存储新数据以及更新旧数据,并且正如您所说,您可以使用下拉刷新功能,这证明有助于存储最新数据和旧数据,并始终显示最新数据当您从正在更新的数据源获取时
。