调用 requestLocationUpdates 后,位置服务是否至少发送了一个位置?

Is at least one location sent by location services after calling requestLocationUpdates?

在使用 LocationServices.FusedLocationApi.requestLocationUpdates 设置接收位置更新时,我需要确保至少获得一个位置。

例如,如果设备已经静止了很长时间,在调用 LocationServices.FusedLocationApi.requestLocationUpdates 之后它会在最后已知位置触发吗?或者我也必须打电话给 LocationServices.FusedLocationApi.getLastLocation 吗?

根据我的经验,您必须调用 LocationServices.FusedLocationApi.getLastLocation() 才能保证立即获得位置对象,即使是该方法也可能 return null 在设备重新启动后立即。

LocationServices.FusedLocationApi.requestLocationUpdates() 会在有可用的新位置或相对较新的位置在精度、能量等方面与您的请求参数匹配时给您回电,但如果没有位置与您的匹配参数可用它可能不会回调一段时间。例如,如果您请求需要 GPS 的高精度位置,并且最近没有使用 GPS,并且设备位于阻止 GPS 信号接收的位置,则在设备再次获得 GPS 信号之前,您可能看不到回调。