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


}
相关推荐
一笑的小酒馆3 小时前
Android launcher3实现简单的负一屏功能
android
xuyin12044 小时前
【Android】Flow基础知识和使用
android
李新_5 小时前
基于Markwon封装Markdown组件
android·aigc·markdown
Non-existent9877 小时前
Flutter + FastAPI 30天速成计划自用并实践-第10天-组件化开发实践
android·flutter·fastapi
@老蝴9 小时前
MySQL数据库 - 约束和联合查询
android·数据库·mysql
ljt27249606619 小时前
Compose笔记(六十一)--SelectionContainer
android·笔记·android jetpack
有位神秘人10 小时前
Android中Compose系列之按钮Button
android
AI科技摆渡10 小时前
GPT-5.2介绍+ 三步对接教程
android·java·gpt
csdn122598733611 小时前
Android12 新启动页到底该怎么做
android·启动页
aaajj12 小时前
【Android】关于MY_PACKAGE_REPLACED广播
android