Flutter插件开发:如何注销Lifecycle监听器?
清理方案
你需要在onDetachedFromActivity中完成两项清理操作,对应你在onAttachedToActivity里的注册行为:
- 移除权限请求结果监听器
调用ActivityPluginBinding的removeRequestPermissionsResultListener方法,传入当前监听器实例(即this),避免监听器持有引用导致内存泄漏。 - 清空Activity引用
将currentActivity置为null,切断插件对Activity的强引用,防止Activity被销毁后仍被插件持有引发内存泄漏。
对应的代码实现如下:
override fun onDetachedFromActivity() { // 移除权限请求结果监听器 binding?.removeRequestPermissionsResultListener(this) // 清空Activity引用 currentActivity = null }
注意:如果你的
binding是在onAttachedToActivity中保存的成员变量,才能直接调用上述代码;若未保存binding,建议在onAttachedToActivity时将其存为成员变量,方便后续清理。
内容的提问来源于stack exchange,提问作者RabbitHole24
相关产品推荐
相关产品推荐

