FusedLocationProviderClient的getCurrentLocation传null作为取消令牌是否可行
FusedLocationProviderClient.getCurrentLocation() 传入null取消令牌的影响说明
首先给出明确结论:传入null是官方允许的合法用法,不会直接引发功能异常,但部分场景下推荐传入有效取消令牌。
- 基础规则说明
getCurrentLocation(int priority, @Nullable CancellationToken cancellationToken)方法的第二个参数本身被标记为可空类型,传null时系统不会为本次定位请求附加主动取消规则,请求会正常执行直到返回定位结果、触发系统超时或定位模块报错,这也是你当前传null仍能正常获取定位的原因,不会产生崩溃、定位失败这类直接不良影响。 - 传null可能存在的隐性问题
- 若发起定位请求后,发起请求的页面/组件已经销毁(比如用户退出需要定位的页面),没有取消令牌的话无法主动中断请求,定位会在后台继续执行直到结束,会产生不必要的功耗,若回调还持有页面/组件的强引用,还可能引发内存泄漏。
- 如果你有批量发起定位、需要在特定时机主动中断未完成定位的需求,不传取消令牌就无法实现这类控制,会造成资源浪费。
- 使用建议
- 如果只是简单的单次定位需求,不需要主动中断请求的场景,直接传null即可,不需要额外构造取消令牌。
- 如果是在页面/组件生命周期内发起的定位,推荐传入有效
CancellationToken,在页面销毁(比如onStop/onDestroy生命周期回调)时调用cancel()方法终止未完成的定位,避免内存泄漏和不必要的功耗。
内容的提问来源于stack exchange,提问作者Walid Ahmed
相关产品推荐
相关产品推荐

