如何替代已废弃的LocationRequest创建位置请求?
LocationRequest.Builder 替代废弃API的解决方案
直接替换示例
把你原来的废弃写法换成LocationRequest.Builder的标准用法,以下是Kotlin代码示例:
废弃写法(不可用)
// 旧的废弃代码 val locationRequest = LocationRequest.create().apply { interval = 10000 fastestInterval = 5000 priority = LocationRequest.PRIORITY_HIGH_ACCURACY }
新的替代写法
// 基于Builder的新写法 val locationRequest = LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 10000) .setMinUpdateIntervalMillis(5000) // 可选:适合天气应用的延迟设置,允许系统批量更新节省电量 .setMaxUpdateDelayMillis(15000) .build()
关键参数说明
- 优先级:用
Priority枚举替代旧的常量,常用选项:PRIORITY_HIGH_ACCURACY:高精度定位(GPS+网络),适合首次获取用户当前位置PRIORITY_BALANCED_POWER_ACCURACY:平衡精度与功耗(网络定位为主),适合天气应用后续低频率更新
- 构造函数第二个参数:
updateIntervalMillis,即期望的位置更新间隔(毫秒) setMinUpdateIntervalMillis():设置系统允许的最快更新间隔,防止频繁更新耗电,数值需小于等于更新间隔setMaxUpdateDelayMillis():设置最大延迟时间,系统会在这个时间段内批量处理位置更新,适合非实时场景(比如天气应用)
天气应用适配建议
因为天气应用不需要实时高频更新位置,推荐两种配置:
- 首次启动获取当前位置:设置间隔为0,只获取一次后停止
val oneTimeLocationRequest = LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 0) .build() - 后续低功耗更新:用平衡精度+长间隔,比如30分钟更新一次
val lowPowerLocationRequest = LocationRequest.Builder(Priority.PRIORITY_BALANCED_POWER_ACCURACY, 30 * 60 * 1000) .setMinUpdateIntervalMillis(25 * 60 * 1000) .setMaxUpdateDelayMillis(35 * 60 * 1000) .build()
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

