在Google Api客户端连接排队之前是否提出了位置请求?

时间:2016-05-13 11:20:10

标签: android api location google-play google-play-services

我想知道在连接Google Api客户端之前是否提出了位置请求,请求是否会在客户端连接后排队并执行?

来自谷歌Android培训的Receiving Location Updates,似乎没有:

  

在请求位置更新之前,您的应用必须连接到位置服务并发出位置请求。有关更改位置设置的课程将向您展示如何执行此操作。一旦位置请求到位,您可以通过调用requestLocationUpdates()来启动定期更新。在Google API客户端提供的onConnected()回调中执行此操作,该回调在客户端准备就绪时调用。

但是从Google Android blog post开始,这似乎不可能:

  

另一个新功能是将API调用排入队列,允许您在连接API客户端之前调用read方法。

如果在连接Google Api客户端之前拨打以下电话,我会收到位置更新吗?

LocationServices.FusedLocationApi.requestLocationUpdates(
    mGoogleApiClient,
    mLocationRequest,
    this);

其中thisLocationListener

感谢。

1 个答案:

答案 0 :(得分:0)

我在研究中发现了Transmitting Network Data Using Volley,它也可能对你有帮助。

Volley提供以下好处:

  
      
  • 自动安排网络请求。
  •   
  • 多个并发网络连接。
  •   
  • 使用标准HTTP缓存进行透明磁盘和内存响应缓存   相干性。
  •   
  • 支持请求优先级。
  •   
  • 取消请求API。您可以取消单个请求,也可以取消   设置要取消的请求的块或范围。
  •   
  • 易于定制,例如,重试和退避。
  •   
  • 强大的排序功能,可以轻松正确地填充您的UI   数据从网络异步获取。
  •   
  • 调试和跟踪工具。
  •   

有了这个,您可以选择管理如何处理位置请求的排队。您可以使用名为Volley.newRequestQueue的便捷方法设置请求队列以提供您自己的自定义行为。

如果您只需要提出一次性请求并且不想离开线程池,您可以在任何需要的地方创建RequestQueue,并在您的响应或错误发生后在RequestQueue上调用stop()回来,使用Volley.newRequestQueue()方法。

Setting up a RequestQueue需要完成以下两项工作:

  
      
  1. 执行请求传输的网络
  2.   
  3. 用于处理缓存的缓存
  4.   

文档中提供了一个代码段,其中显示了设置RequestQueue所涉及的步骤。

除了该片段之外,此SO帖子How do I use the Volley network request queue?也可能为您提供有关其实施方式的解决方案。