【发布时间】:2015-09-01 06:56:29
【问题描述】:
我面临以下问题:
我有一个社交网络的网络服务,允许查询用户上传的视频。 Web 服务签名为:
getUserVideos(String username, int quantity, int offset)
我需要创建一个包含视频的画廊。所以基本上我请求 [quantity=10,offset=0] 然后 [quantity=10,offset=10],使用 ViewPger 作为图库。
此时,画廊正在工作(在本示例中位于位置 15)。如果用户离开应用程序,即按下主页按钮,我们需要保存状态。稍后,当用户在几个小时后返回应用程序时,getUserVideos 服务可能会返回不同的数据(即,如果给定的用户名同时上传了新视频)。
我看到了两种不同的行为,但发现都是错误的。
- 离开应用时保存视频列表,用户回来时恢复,由于服务器有新数据,客户端数据旧,客户端偏移量和服务器偏移量不匹配,返回重复视频或从不返回其他人。
- 重新查询服务器,将索引保留在图库中,但更新内容(即返回视频编号 15)。这将导致用户返回时看到的视频与他离开前看到的视频不同。
这类问题的常用方法是什么?
【问题讨论】:
-
您的两种方法都很好,但您可以单独缓存该视频并在他点击视频时重新加载新视频
-
您是否有从网络服务获取的视频的任何 ID 或唯一标识符
-
是的,视频有唯一的 id,但我无法更改网络服务
-
我会说当用户返回时留在同一个视频上,但给出一个视觉指示,表明有新内容。然后,您可以使用按钮加载新数据或拉动刷新。因此,如果用户正在观看视频 3 并且有 10 个新视频,则用户返回时将观看视频 13(相同)。这就是我会做的。
标签: java android android-fragments android-activity android-fragmentactivity