频繁调用fusedLocationProviderClient lastKnownLocation的Android电池消耗?
Posted
技术标签:
【中文标题】频繁调用fusedLocationProviderClient lastKnownLocation的Android电池消耗?【英文标题】:Android battery consumption in case of frequent call of fusedLocationProviderClient lastKnownLocation? 【发布时间】:2021-07-09 17:29:03 【问题描述】:当我点击某个 API 时,我有一个发送用户位置的用例。由于此 API 调用频繁,我想避免应用程序的电池消耗。
我可以使用用户的 lastKnownLocation 并发送它。
fun getLastLocation(): Single<LocationUpdate>
return Single.create emitter ->
fusedLocationproviderClient.lastLocation.addOnSuccessListener location ->
if (location != null)
emitter.onSuccess(LocationUpdate.Valid(location.lat, location.long))
else
emitter.onSuccess(LocationUpdate.UnKnown)
.addOnFailureListener
emitter.tryOnError(it)
这个函数 getLastLocation 可以被多次调用,我读到fusedLocationproviderClient.lastLocation
非常省电,不会每次都调用新的 API 并依赖其他应用程序来获取位置。
想了解并知道,是否可以在应用程序中频繁使用此getLastLocation
调用并且它的电池效率高,或者我应该考虑另一种方式,例如缓存它并设置到期时间。
【问题讨论】:
【参考方案1】:lastLocation 就像你说的那样只是一个缓存位置,所以是的,只要你明白它听起来像你做什么,就可以使用它
【讨论】:
感谢您的回复。我阅读了文档,因此它不会进行新的 API 调用并依赖于其他应用程序并在其末尾维护缓存。那么,无论我调用这个 lastLocation 多少次,它都不会对电池产生影响吗?而且我也相信它是一个异步调用。 主要的电池消耗是实际的 GPS 芯片而不是通话,最后的位置不使用实际的 GPS 啊,好吧,这是有道理的,如果你能回答,最后一个查询,这个缓存的数据有多准确,我知道有办法让它同步而不是异步。但也想听听你的建议。 不确定在这种情况下您所说的准确性是什么意思,但它与应用程序上次获得位置时一样准确。要进行同步,您可以使用Task.await
参见示例***.com/questions/51996522/…以上是关于频繁调用fusedLocationProviderClient lastKnownLocation的Android电池消耗?的主要内容,如果未能解决你的问题,请参考以下文章
FusedLocationProvider - 如果位置模式为“仅设备”,任何获取位置的方法?
FusedLocationProvider 始终返回 null Location 对象
FusedLocationProvider 有时会给出错误的位置
无法使用 FusedLocationProvider 将 Gps 设置升级到高精度在某些设备中
Android:FusedLocationProvider,每隔几秒获取一次位置
使用 fusedLocationProvider.removeLocationUpdates (locationCallback) Android Studio 时出错