【发布时间】: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 调用并且它的电池效率高,或者我应该考虑另一种方式,例如缓存它并设置到期时间。
【问题讨论】:
标签: android location fusedlocationproviderapi android-fusedlocation fusedlocationproviderclient