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


}
相关推荐
苏金标28 分钟前
android 的软件盘
android
wkj0011 小时前
php中调用对象的方法可以使用array($object, ‘methodName‘)?
android·开发语言·php
wkj0012 小时前
php use 命名空间与 spl_autoload_register的关系
android·php·android studio
fatiaozhang95272 小时前
浪潮CD1000-移动云电脑-RK3528芯片-2+32G-开启ADB ROOT破解教程
android·adb·电视盒子·机顶盒rom·魔百盒刷机·外贸盒子
hudawei9962 小时前
kotlin中withContext,async,launch几种异步的区别
android·开发语言·kotlin
消失的旧时光-19432 小时前
Kotlin 常用语法糖完整整理
android·开发语言·kotlin
coderlin_10 小时前
BI布局拖拽 (1) 深入react-gird-layout源码
android·javascript·react.js
2501_9159184111 小时前
Fiddler中文版全面评测:功能亮点、使用场景与中文网资源整合指南
android·ios·小程序·https·uni-app·iphone·webview
wen's12 小时前
React Native安卓刘海屏适配终极方案:仅需修改 AndroidManifest.xml!
android·xml·react native
编程乐学13 小时前
网络资源模板--基于Android Studio 实现的聊天App
android·android studio·大作业·移动端开发·安卓移动开发·聊天app