Was ist der Zweck dieser Schnittstellen?
CharSequence
ist eine Standard-Java-Schnittstelle, eine Folge von Zeichen darstellt. String
ist die am häufigsten verwendete konkrete Implementierung von CharSequence
, gefolgt von StringBuilder
.
Spanned
ist ein CharSequence
mit "Spannen", die die Formatierung angeben, die auf Teile des Textes angewendet wird, wo diese Spannen nicht geändert werden können.
Spannable
ist ein Spanned
, in der Fähigkeit, das Hinzufügen der Spannweiten zu ändern (hinzufügen oder Formatierungen entfernen), aber nicht den Text selbst zu ändern.
SpannedString
ist eine konkrete Implementierung der Spanned
Schnittstelle.
SpannableString
ist eine konkrete Implementierung der Spannable
Schnittstelle.
in welchen Szenarien ist es meistens üblich, sie zu verwenden?
Wenn es eine Methode ist, dass ein zurückgibt (beispielsweise auf einer getText()
EditText
) oder wenn es ein Verfahren, das einer als Parameter (beispielsweise auf einem setText()
TextView
). 
Ihr zitierten Fall der Verwendung von Html.fromHtml()
vielleicht in herkömmlichen Android Entwicklung ist die häufigste, als TextView
mit einem Spanned
viel leichter ist als ein WebView
ist.Es gibt jedoch auch andere Anwendungsfälle, wie zum Beispiel:
In welchen Fällen ist es am besten, sie zu vermeiden?
Sie sind einzigartig schrecklich an Kahlköpfigkeit Bekämpfung, Schneeräumung, Wärmepumpe Reparatur, so dass ein Soufflé usw.
:-)
Gibt es offensichtliche Auswirkungen auf die Leistung berücksichtigt werden, wenn einen von ihnen benutzen?
Schnittstellen haben definitionsgemäß keine "Auswirkungen auf die Leistung" - sie sind lediglich eine Beschreibung einer API.
Ich bin mir nicht bewusst, dass bei jedem bestimmten Vorgang deutlich langsamer als SpannedString
ist. Jedoch kann die SpannableStringBuilder
(die es ermöglicht, den Text zusätzlich zu den Abschnitten, die diesen Text formatieren, zu manipulieren) durchaus etwas langsamer als oder SpannedString
für verschiedene Dinge sein. Ob die Leistungsunterschiede ausreichen, ist abhängig von der Verwendung.
Da die offiziellen Dokumente still sind, Wie haben Sie diese Informationen erhalten? Manuelle Quelle, die den hardcore Weg durchstöbert? – Pacerier
@Pacerier: Ich bin mir nicht sicher, auf welchen Teil dieser Antwort Sie sich beziehen. Zum Beispiel stammt die in dieser Antwort beschriebene Klassenhierarchie ganz sicher aus der Dokumentation, insbesondere den JavaDocs. Umgekehrt kommt der Mangel an Nützlichkeit dieser Dinge für die Bekämpfung von Kahlheit von persönlicher Beobachtung. – CommonsWare
@CommonsWare, also bedeutet das, dass eine Zeichenkette mit Smileys dazwischen als "spannableString" und nicht als normale Zeichenkette betrachtet wird. weil ich mit 'setText (my_string)' konfrontiert bin, wenn 'my_string' smileys hat in ihm (wie das von watsapp) im Vergleich zu normalen String .. (die nur Klartext hat) freundlicherweise werfen einige Licht ... irgendwie glaubte ich, dass smilleys nichts als Text (Unicode) sind nur – eRaisedToX