在对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中别忘了注册addObservercontext = null}}