我有一个JSON响应,
基本上是类别列表
[{event_cat_id: "1", event_cat_name: "Sport"
}, { event_cat_id: "25", event_cat_name: "Cinema" }]
使用ID,我向服务器查询事件列表。
所有发回的事件都存储在本地数据库中。
我的问题是类别列表可能会更改,我想知道在服务器上检查更新的最佳方式是什么。
我可以在每次点击视图时发送请求吗?这会影响用户体验吗?
构建在android 上
在服务器端,如果记录可用,则为每个记录和属性保留上次更新的时间戳
例如:
id: 25, name: Cinema, available: 1, timestamp: 1342777317
- 获取服务器当前时间
- 从上次同步后修改的服务器获取数据
- 分析数据并将其存储在本地数据库中
- 从1写入服务器时间。点作为上次同步时间
查询自时间戳以来修改的服务器上的数据很容易。第一次同步时,最后一次同步时间仅为0。
您不能删除服务器端的记录,可以将它们设置为不可用:available: 0
您可以使用AlarmManager设置触发服务器请求的不精确重复事件,这样您的信息可以频繁更新,但可以节省电池。您应该使用服务或意图服务在后台线程中触发服务器请求和响应。一旦发生更改,您可以使用广播或数据库的ContentObserver通知您的活动。
这里有一个很好的例子http://www.dotkam.com/2011/01/10/android-prefer-alarms-and-intent-receivers-to-services/
无论我从中了解到什么,我都建议您在服务器数据库上有任何更新或类别可用时使用C2DM推送通知。它会将消息推送到设备,设备代码会尝试从服务器url中提取数据。
通过这种方式,每次用户设备都不能ping到服务器,这将减少服务器的负载,并节省设备的电池(耗尽电池)。