Was ist der Zweck dieser Schnittstellen?
CharSequence
ist eine Standard-Java-Schnittstelle, die eine Folge von Zeichen darstellt. String
ist die am häufigsten verwendete konkrete Implementierung von CharSequence
, gefolgt von StringBuilder
.
Spanned
ist ein CharSequence
mit "Bereiche", der die Formatierung angibt, die auf Teile des Textes angewendet werden soll, in denen diese Bereiche nicht geändert werden können.
Spannable
ist eine Spanned
, die die Möglichkeit hinzufügt, die Bereiche zu ändern (Formatierung hinzuzufügen oder zu entfernen), aber den Text selbst nicht zu ändern.
SpannedString
ist eine konkrete Implementierung der Spanned
Schnittstelle.
SpannableString
ist eine konkrete Implementierung der Spannable
Schnittstelle.
In welchen Szenarien werden sie meistens verwendet?
Wenn es eine Methode gibt, die eine zurückgibt (z. B. getText()
bei einer EditText
), oder wenn es eine Methode gibt, die eine als Parameter verwendet (z. B. setText()
bei a TextView
).
Ihr zitierter Fall der Verwendung Html.fromHtml()
ist vielleicht der häufigste in der konventionellen Android-Entwicklung, da ein TextView
mit a Spanned
viel leichter ist als ein WebView
. Es gibt jedoch auch andere Anwendungsfälle wie:
In welchen Fällen ist es am besten, sie nicht zu verwenden?
Sie sind besonders schrecklich bei der Bekämpfung von Kahlheit, Schneeräumung, Reparatur von Wärmepumpen, Herstellung eines Soufflés usw.
:-)
Gibt es offensichtliche Auswirkungen auf die Leistung, die bei der Verwendung einer dieser Faktoren zu berücksichtigen sind?
Schnittstellen haben per Definition keine "Auswirkungen auf die Leistung" - sie sind lediglich eine Beschreibung einer API.
Mir ist nicht bewusst, dass dies SpannableString
wesentlich langsamer ist als SpannedString
bei einer bestimmten Operation. Allerdings SpannableStringBuilder
(was das Bearbeiten des Textes zusätzlich zu den Bereichen ermöglicht, in denen dieser Text formatiert wird) kann jedoch etwas langsamer sein als SpannableString
oder SpannedString
für verschiedene Dinge. Ob die Leistungsunterschiede ausreichen, hängt jedoch von der Verwendung ab.