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