处理多个http请求并丢弃除最后一个之外的所有响应

时间:2013-02-20 14:19:57

标签: android httprequest

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

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

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

2 个答案:

答案 0 :(得分:2)

问题是:您何时确定用户已准备好进行平移?

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

例如7之后的一些平底锅,你等待2秒?并确定“好的,用户已完成平移,让我们处理最后一个请求”? 意思是只做1个请求。

或者您实际上是在做7个请求并且只使用最后一个响应吗?

如果您提出7个请求,为什么不将所有响应保存在同一个变量中,实际上总是使用最后一个。

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

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

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

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

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

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

答案 1 :(得分:0)

您可以使用Singleton设计模式。如果正确实现,它将只允许一个线程/ AsyncTask更改它的状态。这样,您就可以确保它只保留您处理的最后一个响应中的数据。