Quel est le but de ces interfaces?
CharSequence
est une interface Java standard représentant une séquence de caractères. String
est la mise en œuvre concrète de CharSequence
, suivie de StringBuilder
.
Spanned
est un CharSequence
avec des "travées" indiquant le formatage à appliquer à des parties du texte, où ces travées ne peuvent pas être modifiées.
Spannable
est un Spanned
ajout de la possibilité de modifier les travées (pour ajouter ou supprimer une mise en forme), mais pas pour modifier le texte lui-même.
SpannedString
est une implémentation concrète de l' Spanned
interface.
SpannableString
est une implémentation concrète de l' Spannable
interface.
dans quels scénarios est-il le plus courant de les utiliser?
Lorsqu'il y a une méthode qui en renvoie un (par exemple, getText()
sur un EditText
) ou lorsqu'il y a une méthode qui en prend un comme paramètre (par exemple, setText()
sur a TextView
).
Votre cas d'utilisation cité Html.fromHtml()
est peut-être le plus courant dans le développement Android conventionnel, car un TextView
avec un Spanned
est beaucoup plus léger qu'un WebView
. Cependant, il existe d'autres cas d'utilisation, tels que:
Dans quels cas est-il préférable d'éviter de les utiliser?
Ils sont singulièrement terribles pour lutter contre la calvitie, le déneigement, la réparation de la pompe à chaleur, la fabrication d'un soufflé, etc.
:-)
Y a-t-il des impacts évidents sur les performances à prendre en compte lors de l'utilisation de l'un d'entre eux?
Les interfaces, par définition, n'ont pas d '«impact sur les performances» - elles ne sont qu'une description d'une API.
Je ne suis pas conscient que ce SpannableString
soit beaucoup plus lent que SpannedString
lors d'une opération particulière. Cependant, SpannableStringBuilder
(qui permet de manipuler le texte en plus des étendues qui formate ce texte) peut bien être un peu plus lent que SpannableString
ou SpannedString
pour diverses choses. Le fait que les différences de performances soient suffisantes ou non dépendra de l'utilisation, cependant.