我正在使用 LocationManager 来跟踪用户的位置并在 GoogleMaps 上显示相同的位置。
我正在使用以下方法,但对此有一些疑问。
为了第一次获取用户的位置,我使用:
locationManager = LocationManager.getLocationManager();
location = locationManager.getCurrentLocation();
据我了解,这是一个阻塞调用。因此,我显示无限进度条,直到该方法返回。
获得位置后,我会在 WebBrowser 组件中调用托管在我的服务器上的 jsp 页面,并将纬度和经度传递到该页面。此页面返回一个谷歌地图,其中用户的位置作为标记。
我覆盖onLoad()
WebBrowser 的方法来获取页面加载时的事件。
页面加载后,我会立即为我的locationManager
获取位置更新。
当我在侦听器中收到更新时,我使用以下命令在页面上执行 JavaScriptBrowserComponent
-> execute()
method.
这种方法效果很好。
问题:
当我第一次查询 LocationManager 以获取用户位置时,我没有显式分配侦听器。这个方法内部是如何执行的?
这会启动它自己的监听器吗?
如果是,那么当我在onLoad()
方法,初始侦听器是否被删除?
我应该明确清除 locationManager 的监听器吗?
或者当我分配侦听器时,它是否分配较早启动的侦听器?
我最终会让两个听众做同样的工作吗?
BR,
Sanket
您正确使用 API 调用 getCurrentLocation() 或 getLastKnownLocation() 将返回一个 Location 对象。(它可能会在内部启动侦听器,但会在内部停止)。
当您调用 setListener 时,当您不想再获取更新时,应该清除侦听器。
(无论哪种方式,你最终都不会拥有 2 个听众)
请注意,getCurrentLocation() 在 Android 上可能会返回不太准确的位置对象,因为如果 GPS 不可用和/或无法工作,它将默认为网络提供商。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)