这些接口的目的是什么?
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关于各种东西。但是,性能差异是否足够重要,取决于使用情况。