我觉得完全失去了听起来微不足道的东西。根据我的理解,我的客户想要在android中发生某种行为,称为自动同步。
我正在使用视图控制器构建应用程序,该应用程序具有从服务器检索的数据。每个视图控制器都显示一个对象列表,或只显示一个对象。
当应用程序来自后台时,我的客户端想要发生请求,询问服务器是否有任何要检索的新对象。如果答案是肯定的,我会收到我应该更新的视图控制器,当我在那些显示这些对象的视图控制器上时,我应该发出接收新对象并更新我的列表或视图的请求。 / p>
应该没有来回通知,因为这将是应用程序的内部过程,以保持它始终更新。
因此,我的客户端要求我构建此行为并使缓存系统正常工作。是否有任何良好做法或解决方案可以实现这一结果?
答案 0 :(得分:2)
来自JavaScript背景,我会给你我的答案,该答案适用于在JavaScript上运行的Cordova类型的移动应用程序。
1)在您的移动设备上创建一个本地数据库并将所有对象存储在那里
2)在数据库中创建一个表来存储“最后同步”日期和时间
3)在服务器上设置API端点以接受“last sync”参数并返回除上次同步日期和时间之外的所有新数据。
4)在每次页面加载时,向API发出请求以检索最新信息并将其保存在本地数据库中
5)在每个后续页面加载时,加载新数据。 (作为用户体验)
现在,如果您不希望在每次加载页面时不断进行API调用,则会有不同的方法。
在移动应用和服务器之间设置套接字连接 http://socket.io
这将允许您在每次更新服务器数据库时“推送”新数据。
当用户第一次打开应用程序时,进行API调用以获取所有更新并在socket.io频道上注册以进行实时更新。
最重要的是,当API调用过早终止并丢失一些信息时。仅在成功更新时更新“上次同步”日期时间。
答案 1 :(得分:0)
也许一个好的答案是使用核心数据。然后根据需要同步本地结果,同时发出请求并合并本地和服务器响应。你必须决定哪个参考获胜。