requestLocationUpdates 与位置侦听器

Posted

技术标签:

【中文标题】requestLocationUpdates 与位置侦听器【英文标题】:requestLocationUpdates vs Location Listener 【发布时间】:2013-05-02 21:28:33 【问题描述】:

使用带有 requestLocationUpdates() 的位置管理器对象与仅使用 LocationListener 有什么区别?他们都做同样的事情并以同样的方式工作吗?一个比另一个有什么优势?

LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

lm.requestLocationUpdates(LocationManager.GPS_provicer, 0, 0, new LocationListener())
//all appropriate methods here

VS.

LocationListener myLocationListener = New LocationListener()
// all appropriate methods here

【问题讨论】:

当我说技术上的错误时,它还不足以投票反对:) 【参考方案1】:

您的问题在技术上不正确。 LocationManager 通过 requestLocationUpdates 注册一个监听器。当您的位置经理意识到发生超时或距离旅行时,侦听器是回调。在您的情况下,将立即调用位置侦听器。

但请注意,使用 0,0 参数的位置管理器请求更新不是已知是即时的。有时可能会有延迟。

所以你关于有什么区别的问题是不正确的。这就像问Print thisSystem.out.println() 有什么区别:)

【讨论】:

好的,所以它不是一个或一个类型的东西。我使用我的 LocationManager 对象来 requestlocationUpdates() 然后我使用 LocationListener 处理这些更新? 是的,你是对的。但是 LocationListener 是一个接口,所以你需要实现它。并将此对象引用提供给 requestLocationUpdates。正确。 感谢您解决此问题。没有意识到位置列表器处理位置变化的重要性。还认为位置侦听器在需要使用位置管理器时单独使用很有用。

以上是关于requestLocationUpdates 与位置侦听器的主要内容,如果未能解决你的问题,请参考以下文章

requestLocationUpdates() 在单独的线程中

进制与位运算

requestLocationUpdates() 花费太多时间或根本不起作用

为啥 requestLocationUpdates 会在接收时立即触发?

C ++枚举标志与位集

如何等待 requestLocationUpdates() 回调意图完成?