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 次 |
| 最近记录: |