GPS信号丢失时仍可获取Location信息的原因咨询
GPS信号丢失仍能获取位置的原因
先看你给出的代码:
Location gpsLocation = appLocationService.getLocation(LocationManager.GPS_PROVIDER); if ( gpsLocation != null) { //为何GPS位置信息仍可获取? }
出现这种情况主要有这几个原因:
- 系统缓存了历史位置:Android系统会自动缓存最近一次成功获取到的GPS位置数据。当GPS信号丢失后,调用
getLocation时,系统不会直接返回null,而是把缓存里的最后有效位置返回给你。 - GPS提供者保留历史记录:
LocationManager.GPS_PROVIDER本身会存储最近的有效位置信息,哪怕当前搜不到卫星,只要之前成功定位过,就会把这条历史数据返回。 - 方法未校验实时有效性:你用的
getLocation方法不会主动校验当前GPS信号是否正常,它只返回提供者能拿到的最近位置,不管这个位置是不是实时更新的。如果要确认当前是否有有效GPS信号,得额外检查位置的时间戳,或者通过监听位置变化广播来判断最新位置的有效性。
内容的提问来源于stack exchange,提问作者kamil51
相关产品推荐
相关产品推荐

