关于SpannableStringBuilder使用ClickableSpan导致内存泄漏

在对text文字部分设置点击事件就要用到ClickableSpan,但是这个会导致内存泄漏,在回调onClick方法中设置跳转代码会导致我们的activity无法被释放。

在activity的onDestroy方法中即使使用SpannableStringBuilder的removespan和clear方法都没用。

可以使用自定义的ClickableSpan然后实现LifecycleObserver监听生命周期

复制代码
class CustomClickableSpan(var context: Activity?) : ClickableSpan(),
    LifecycleObserver {
    override fun onClick(widget: View) {

    }
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroy() {
    // 在销毁的时候将context置为null 
    // 在activity中别忘了注册addObserver
        context = null
    }


}
相关推荐
alexhilton17 小时前
Android的Agent优先时代:构建时vs运行时
android·kotlin·android jetpack
Cutecat_18 小时前
视频字幕处理工具横向:提取模式 vs 编辑模式,该如何选择
android·前端·ios·语音识别
2601_9617652919 小时前
【分享】PlayerPro媒体音乐播放器 完整专业版
android·媒体
JohnnyDeng9421 小时前
【Android】Android 包体积优化:R8/ProGuard 深度配置全攻略
android·性能优化·kotlin·jetpack
故渊at21 小时前
第九板块:Android 多媒体体系 | 第二十四篇:Camera Service 与 HAL3 成像流水线
android·camera·多媒体体系·hal3
Jinkxs1 天前
Python基础 - 初识内置函数 Python自带的便捷工具
android·java·python
私人珍藏库1 天前
【Android】VLLO-韩国热门手机剪辑APP
android·app·工具·软件·多功能
Cloud_Shy6181 天前
解读《Effective Python 3rd Edition》:从练气到老魔(第六章 Item 40 - 43)
android·开发语言·人工智能·笔记·python·学习方法
AFinalStone1 天前
Android12 U盘插拔链路源码全解析(五):Framework层(下) StorageManagerService
android·frameworks
林九生1 天前
【实用技巧】MySQL 绿色版一键路径更新脚本详解 —— update_path.bat 深度解析
android·数据库·mysql