rup*_*pps 17 performance android spannablestring
我正在使用类似wiki的解析器,为一组标记令牌创建跨度.它正在工作,但在令牌迭代器中我经常需要将a上的部分结果转换SpannableStringBuilder
为a SpannableString
.这被称为非常频繁,所以我是最有效的解决方案,并避免创建额外的对象.
目前我正在使用;
SpannableStringBuilder stuff=complex_routine_that_builds_it();
SpannableString result=SpannableString.valueOf(stuff);
Run Code Online (Sandbox Code Playgroud)
然而,这个valueOf
调用在内部构建了SpannableString
一种从头开始,执行a toString
和循环来复制分配spans
.
正如SpannableStringBuilder
名字所暗示的,我认为,也许有一种更快的方式来获得SpannableString
从建设者.这是真的吗?
Sur*_*gch 29
当您可以直接使用它时,无需将a转换SpannableStringBuilder
为a SpannableString
,如TextView
:
SpannableStringBuilder stuff = complex_routine_that_builds_it();
textView.setText(stuff);
Run Code Online (Sandbox Code Playgroud)
正如问题已经表明的那样,如果你绝对不得不做的话,你可以进行转换
SpannableStringBuilder stuff = complex_routine_that_builds_it();
SpannableString result = SpannableString.valueOf(stuff);
Run Code Online (Sandbox Code Playgroud)
但你应该考虑为什么你甚至需要进行转换?只需使用原件SpannableStringBuilder
.
SpannableString
VS SpannableStringBuilder
这两者之间的差异类似于String
和之间的差异StringBuilder
.A String
是不可变的,但您可以更改文本StringBuilder
.
类似地,a中的文本SpannableString
是不可变的,而a中的文本SpannableStringBuilder
是可变的.但值得注意的是,这仅适用于文本.两者(甚至是SpannableString
)的跨度都可以改变.
有关
归档时间: |
|
查看次数: |
8591 次 |
最近记录: |