我使用LocationManager跟踪用户的位置并在GoogleMaps上显示相同的位置。 我使用以下方法并对此有一些疑问。
首次获取用户的位置,我正在使用:
locationManager = LocationManager.getLocationManager();
location = locationManager.getCurrentLocation();
据我所知,这是一个阻止电话。因此,我会显示一个无限的进度条直到此方法返回。
获得该位置后,我在WebBrowser组件中调用托管在我服务器上的jsp页面,并将lat和lng传递给此页面。此页面返回一个谷歌地图,其中用户的位置为标记。
我覆盖了WebBrowser的onLoad()
方法,以便在加载页面时获取事件。
加载页面后,我会立即为locationManager
分配一个监听器以获取位置更新。
当我在收听者中收到更新时,我会使用BrowserComponent
- >在页面上执行javascript。 execute()
方法。
这种方法运作良好。
问题:
当我第一次向LocationManager查询用户的位置时,我没有明确指定一个监听器。该方法如何在内部执行?
这是否会启动自己的监听器?
如果是,那么当我在onLoad()
方法中分配一个监听器时,初始监听器是否会被删除?
我应该明确清除我的locationManager的监听器吗?
或者当我分配监听器时,它是否分配了先前启动的监听器?
我最终会让两位听众做同样的工作吗?
BR,
SANKET
答案 0 :(得分:2)
您正在使用API正确调用getCurrentLocation()或getLastKnownLocation()将返回一个Location对象。(它可以在内部启动一个侦听器,但它将在内部停止)。 当您调用setListener时,如果您不想再获取更新,则应该清除您的侦听器。 (无论哪种方式,你最终都不会有2个听众)
请注意,getCurrentLocation()可能会在Android上返回一个不太准确的Location对象,因为如果gps不可用和/或无效,它将默认为网络提供者。