android - SpannableString 中的内存泄漏,取决于我放置 ClickableSpan 的位置
问题描述
所以,....
我有这个代码(onStart
):
ss = new SpannableString(getString(R.string.legal_user_acceptance_disclaimer));
ss.setSpan(clickableSpanTermsOfUse, 32, 44, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
这泄漏了父级Activity
-(这些行在)。
如果我只改变数字:
ss.setSpan(clickableSpanTermsOfUse, 49, 63, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
泄漏消失。
clickableSpanTermsOfUse
(memory leak
与普通相同ClickableSpan
):
clickableSpanTermsOfUse = new NoRefCopySpan() {
@Override
public void onClick(View textView) {
startActivity(new Intent(ChooseLoginRegistrationActivity.this, PrivacyStatement.class));//, TermsOfUse.class));
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};
public class NoRefCopySpan extends ClickableSpan implements NoCopySpan {
@Override
public void onClick(@NonNull View widget) { }
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
}
}
我尝试了很多,使用SpannableStringBuilder
而不是SpannableString
,将其他地方连接到lifecycle
,手动将所有值设置为null
,唯一不同的是,我把ClickableSpan
.
这里发生了什么,我怎样才能摆脱内存泄漏?
解决方案
推荐阅读
- android - 布局与工厂名称重叠。谁能帮我这个
- java - 为什么我们不能通过未初始化的局部变量访问静态内容?
- python - 如何用元组列表替换列表中正则表达式匹配的模式?
- solr - Solr中距离为3的模糊搜索
- local - 本地家庭执行重启 Google Nest 中心
- python - 如何使用 python 日志记录模块在 dictConfig 文件中设置自定义日志记录处理程序
- javascript - 在 Vue.js 的子组件中放置 Modals
- c# - 多对多关系和创建视图
- c# - 如何使用 Convert.ToInt32 在 C# 中构造三元表达式?
- javascript - 如何让我的应用程序显示错误消息而不是损坏的图像链接?