我想知道在连接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);
其中this
是LocationListener
。
感谢。
答案 0 :(得分:0)
我在研究中发现了Transmitting Network Data Using Volley,它也可能对你有帮助。
Volley提供以下好处:
- 自动安排网络请求。
- 多个并发网络连接。
- 使用标准HTTP缓存进行透明磁盘和内存响应缓存 相干性。
- 支持请求优先级。
- 取消请求API。您可以取消单个请求,也可以取消 设置要取消的请求的块或范围。
- 易于定制,例如,重试和退避。
- 强大的排序功能,可以轻松正确地填充您的UI 数据从网络异步获取。
- 调试和跟踪工具。
有了这个,您可以选择管理如何处理位置请求的排队。您可以使用名为Volley.newRequestQueue
的便捷方法设置请求队列以提供您自己的自定义行为。
如果您只需要提出一次性请求并且不想离开线程池,您可以在任何需要的地方创建RequestQueue,并在您的响应或错误发生后在RequestQueue上调用stop()回来,使用Volley.newRequestQueue()方法。
Setting up a RequestQueue需要完成以下两项工作:
- 执行请求传输的网络
- 用于处理缓存的缓存
醇>
文档中提供了一个代码段,其中显示了设置RequestQueue
所涉及的步骤。
除了该片段之外,此SO帖子How do I use the Volley network request queue?也可能为您提供有关其实施方式的解决方案。