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


}
相关推荐
COSMOS_*6 小时前
2025最新版 Android Studio安装及组件配置(SDK、JDK、Gradle)
android·ide·jdk·gitee·android studio
jian110586 小时前
android studio Profiler性能优化,查看内存泄漏
android·性能优化·android studio
建群新人小猿8 小时前
陀螺匠企业助手——组织框架图
android·java·大数据·开发语言·容器
TheNextByte19 小时前
如何将文件从Android无线传输到 iPad
android·ios·ipad
赫萝的红苹果9 小时前
实验探究并验证MySQL innoDB中的各种锁机制及作用范围
android·数据库·mysql
叶落无痕5210 小时前
Android Studio 2024.3.1 连接夜神模拟器
android·ide·android studio
玲子的猫10 小时前
安卓原生开发实现图片双指放大预览功能
android
2501_9151063211 小时前
如何在iPad上高效管理本地文件的完整指南
android·ios·小程序·uni-app·iphone·webview·ipad
似霰11 小时前
AIDL Hal 开发笔记5----实现AIDL HAL
android·framework·hal
2501_9151063212 小时前
iOS 成品包加固,在只有 IPA 的情况下,能做那些操作
android·ios·小程序·https·uni-app·iphone·webview