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