关于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
    }


}
相关推荐
海兰2 小时前
【实战】MCP 服务在 Nacos 中注册状态分析与优化
android·java·github·银行系统·银行ai
bearpping2 小时前
MySQL压缩版安装详细图解
android·mysql·adb
代码改善世界4 小时前
【matlab初阶】matlab入门知识
android·java·matlab
huwuhang5 小时前
支付宝 APP 谷歌商店版 googleplay版最新
android
User_芊芊君子6 小时前
别再乱用 ArrayList 了!这 4 个隐藏坑,90% 的 Java 开发者都踩过
android·java·数据库
冬天vs不冷6 小时前
为什么 Java 不让 Lambda 和匿名内部类修改外部变量?final 与等效 final 的真正意义
android·java·开发语言
hogenlaw7 小时前
Stream流
android·java·开发语言
常利兵8 小时前
解锁Kotlin:数据类与密封类的奇妙之旅
android·开发语言·kotlin
sunfdf9 小时前
无需密码即可解锁 Android 手机的 5 种方法
android·智能手机
Ln5x9qZC212 小时前
Laravel AI SDK 正式发布
android·人工智能·laravel