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


}
相关推荐
大青蛙蛙6 分钟前
漫画Android:从网络加载一个50MB的图片,要注意什么?
android
kumalab4 小时前
Android及Harmonyos实现图片进度显示效果
android·华为·harmonyos
ynxw4 小时前
Unity AR 实现模型交互
android·unity·ar·交互
alexhilton4 小时前
MVI架构:Compose中的响应式状态管理
android·kotlin·android jetpack
宿辞1924 小时前
LINUX中MYSQL的使用
android·linux·mysql
code bean6 小时前
【C#】 C#中 nameof 和 ToString () 的用法与区别详解
android·java·c#
佛系小嘟嘟6 小时前
Android Studio Jetpack Compose毛玻璃特效按钮
android·ide·android studio
用户2018792831678 小时前
MagiskHidePropsConf 原理与实战故事
android
whysqwhw9 小时前
Egloo 项目结构分析
android
Wgllss9 小时前
大型异步下载器(二):基于kotlin+Compose+协程+Flow+Channel+ OKhttp 实现多文件异步同时分片断点续传下载
android·架构·android jetpack