如何处理来自服务器的更新 - 同步

时间:2012-07-20 09:26:02

标签: android data-synchronization

我有一个JSON响应,

基本上是一个类别列表

[{event_cat_id: "1", event_cat_name: "Sport" 
}, { event_cat_id: "25", event_cat_name: "Cinema" }]

使用ID,我在服务器上查询事件列表。

发回的所有事件都存储在本地数据库中。

我的问题是类别列表可以更改,我想知道在服务器上检查更新的最佳方法是什么。

每次点击视图我都可以发送请求?这会影响用户体验吗?

在android上构建

3 个答案:

答案 0 :(得分:1)

在服务器端,如果记录可用,则保留每个记录和属性的上次更新的时间戳 例如:

id: 25, name: Cinema, available: 1, timestamp: 1342777317
  1. 获取服务器当前时间
  2. 从上次同步时间以来修改的服务器数据
  3. 在本地数据库中解析并存储数据
  4. 将服务器时间从1.点写为上次同步时间
  5. 从时间戳开始,在服务器上查询数据很容易。首先,同步最后同步时间仅为0 您无法删除服务器端的记录,可以将其设置为不可用:available: 0

答案 1 :(得分:0)

您可以使用AlarmManager设置触发服务器请求的不精确重复事件,这样您的信息会经常更新,但可以节省电量。您应该使用服务或intentservice在后台线程中触发服务器请求和响应。一旦发生变化,您就可以使用广播或ContentObserver通知您的活动。

这是一个很好的例子http://www.dotkam.com/2011/01/10/android-prefer-alarms-and-intent-receivers-to-services/

答案 2 :(得分:0)

无论我从中了解到什么,我都建议您在服务器数据库上提供任何更新或类别时使用C2DM推送通知。它会将消息推送到设备,设备代码将尝试从服务器URL中提取数据。

通过这种方式每次用户设备无法ping通服务器,它将减少服务器的负载,并节省设备的电池(耗尽电池)。