【问题标题】:How to handle activity/fragment lifecycle when dealing with dynamical network loaded data处理动态网络加载数据时如何处理活动/片段生命周期
【发布时间】: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


【解决方案1】:

因为您不知道用户是否有视频,所以您必须从零开始向服务器请求。但是当您获取数据时,请检查您获取的数据并删除重复数据并将新数据插入适配器顶部(我不知道)不知道你是否有适配器或其他东西)。

【讨论】:

    猜你喜欢
    • 2019-09-11
    • 2012-01-30
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多