问题描述
当我点击某个 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
调用并且它具有电池效率,或者我应该考虑其他方法,例如缓存它并为其设置到期时间。
解决方法
lastLocation 只是一个缓存位置,就像您说的那样,是的,只要您了解它的含义,就可以使用它