频繁调用 fusedLocationProviderClient lastKnownLocation 时的 Android 电池消耗?

问题描述

当我点击某个 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 只是一个缓存位置,就像您说的那样,是的,只要您了解它的含义,就可以使用它