这些接口的目的是什么?
CharSequence
是表示字符序列的标准 Java 接口。String
是最常用的具体实现CharSequence
,其次是StringBuilder
.
Spanned
是一个CharSequence
带有“spans”的“spans”,表示应用于文本部分的格式,这些spans不能被修改。
Spannable
是一个Spanned
,添加修改跨度(添加或删除格式)的能力,但不能修改文本本身。
SpannedString
是Spanned
接口的具体实现。
SpannableString
是Spannable
接口的具体实现。
在哪些情况下最常使用它们?
当有一个方法返回一个时(例如,getText()
在 an 上EditText
)或当有一个方法将一个作为参数时(例如,setText()
在 a 上TextView
)。
您引用的 using 案例Html.fromHtml()
可能是传统 Android 开发中最常见的,因为 a TextView
with aSpanned
的重量比 a 轻得多WebView
。但是,还有其他用例,例如:
在哪些情况下最好避免使用它们?
他们在对抗秃头、除雪、热泵维修、制作蛋奶酥等方面非常糟糕。
:-)
使用其中任何一种时,是否有任何明显的性能影响需要考虑?
根据定义,接口没有“性能影响”——它们只是对 API 的描述。
我不知道这SpannableString
比SpannedString
任何特定操作都要慢得多。但是,SpannableStringBuilder
(除了格式化文本的跨度之外,它还允许操作文本)可能会比各种事情慢SpannableString
一点SpannedString
。不过,性能差异是否足够重要将取决于使用情况。