升级Google Places API到12.0.x后release()标记为internal,需调整内存泄漏处理吗?
关于Google Places API 12.0.0+中
release()方法标记为internal的处理建议 我刚梳理了这个问题的来龙去脉,在升级到Google Play Services Places API 12.0.0及以上版本后,AutocompletePredictionBufferResponse的release()方法确实被标记为internal,这是Google对API内存管理逻辑的调整,不用过度担心内存泄漏问题,具体细节和处理建议如下:
为什么
release()变成internal了?
之前的版本里,BufferResponse类需要开发者手动调用release()来释放底层的Native资源,现在Google把这个资源释放逻辑改成了API内部自动处理——可能是通过绑定组件生命周期、自动引用计数或者其他内存管理机制,因此不再需要开发者手动干预,所以把release()设为internal,禁止外部调用。会不会产生内存泄漏?
完全不用担心。既然Google主动将这个方法设为internal,就说明他们已经接管了资源释放的工作,之前需要手动释放的Native资源现在会由API自行处理,不会出现遗漏释放导致的内存泄漏问题。为什么文档还没同步更新?
API更新速度快于文档同步是很常见的情况,Google官方文档有时候会滞后于API的实际变更。你可以以当前API的实际行为为准,不用纠结文档的旧说明。你需要做的调整
- 移除代码中所有手动调用
task.result.release()的代码,避免出现编译错误 - 如果实在不放心,可以用Android Studio的内存分析工具(Profiler)对升级后的APP做个简单的内存检测,确认没有异常的资源占用
- 后续可以关注Places API的官方发行说明,大概率之后会补上这个变更的说明
- 移除代码中所有手动调用
内容的提问来源于stack exchange,提问作者mkjorgensen
相关产品推荐
相关产品推荐

