我的应用程序会在特定时间检查用户是否在指定位置。我使用闹钟管理器启动服务来进行此调用:
locationManager.requestLocationUpdates(bestProvider, 0, 0, listener);
同时还需要进行以下检查:
locationManager.getLastKnownLocation(bestProvider);
但是当我在真实设备上运行时,会遇到一些问题。首先,getLastKnownLocation
很可能是GPS最后一次存在的地方,这可能是任何地方(即可能与用户当前位置相距几英里)。所以,我只需要等待 requestLocationUpdates
回调,如果在两分钟内没有回调,则移除监听器并放弃,对吗?
错了,因为如果用户的位置已经稳定(即他们最近使用了GPS并且没有移动),那么我的监听器将永远不会被调用,因为位置不会发生变化。但GPS会一直运行,直到移除了监听器,耗尽电池...
获取当前位置的正确方法是什么,而不是将旧位置误认为当前位置?我不介意等待几分钟。
编辑:我可能错误地认为监听器不会被调用,可能需要更长的时间...很难说。我仍然希望得到一个明确的答案。