0

我有一个 android 应用程序,其中我正在触发 http 请求以从服务器获取数据以显示在 mapview 中。每当用户平移时我都会发出一个请求,现在我的需要是假设用户平移 7 次(意味着 7 个请求进入)我应该取消/丢弃前 6 个请求的响应,并考虑在 mapview 中显示第 7 个响应。

我只是模糊地考虑在请求队列进入时维护请求队列并将其逐个发布到服务 1。如果有新请求进入,如果请求尚未发布,则取消它。如果请求已经发布并且有新请求进入,则丢弃其响应。

处理它的最佳方法是什么。任何指针。

4

2 回答 2

2

问题是:你什么时候决定用户准备好平移?

如果您想创建某种队列,您需要知道何时决定用户准备好平移。

经过一些平底锅(例如 7)后,您等待 2 秒?并决定“好的,用户完成平移,让我们处理最后一个请求”?意味着只做 1 个请求。

还是您实际上做了 7 个请求并且只使用最后一个响应?

如果您执行 7 个请求,为什么不将所有响应保存在同一个变量中,有效地始终使用最后一个。

可能性1(请求多,地图绘制多):

  • 用户平底锅
  • 发送地图信息请求
  • 保存回复
  • 绘制地图
  • 并重复上述步骤

可能性2(许多请求,较少的地图绘制):

  • 用户平底锅
  • 发送地图信息请求
  • 保存回复
  • 如果用户完成平移,请检查计时器?是:继续,否:重复以上
  • 绘制地图

可能性3(较少的要求,较少的地图绘制):

  • 用户平底锅
  • 保存请求
  • 如果用户完成平移,请检查计时器?是:继续,否:重复以上
  • 发送地图信息请求
  • 保存回复
  • 绘制地图
于 2013-02-20T14:32:06.783 回答
0

您可以使用单例设计模式。如果实施得当,它将只允许一个线程/AsyncTask 更改其状态。这样,您可以确保它只保存您处理的最后一个响应中的数据。

于 2013-02-20T14:27:12.507 回答