Quel est le but de ces interfaces ?
CharSequence
est une interface Java standard représentant une séquence de caractères. String
est l'implémentation concrète la plus couramment utilisée de CharSequence
suivi par StringBuilder
.
Spanned
est un CharSequence
avec des "travées" indiquant le formatage à appliquer à des portions du texte, où ces travées ne peuvent pas être modifiées.
Spannable
est un Spanned
en ajoutant la possibilité de modifier les travées (pour ajouter ou supprimer le formatage), mais no pour modifier le texte lui-même.
SpannedString
est une implémentation concrète de la Spanned
interface.
SpannableString
est une implémentation concrète de la Spannable
interface.
dans quels scénarios est-il le plus courant de les utiliser ?
Lorsqu'il existe une méthode qui en renvoie un (par exemple, getText()
sur un EditText
) ou lorsqu'il existe une méthode qui en prend un comme paramètre (par ex, setText()
sur un TextView
).
Le cas que vous avez cité concernant l'utilisation de Html.fromHtml()
est peut-être le plus courant dans le développement conventionnel d'Android, car une 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 mauvais pour combattre la calvitie, déneiger, réparer une pompe à chaleur, faire un soufflé, etc.
-)
L'utilisation de l'une d'entre elles a-t-elle un impact évident sur les performances ?
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 au courant que SpannableString
est nettement plus lent que SpannedString
à une opération particulière. Cependant, SpannableStringBuilder
(qui permet de manipuler le texte en plus des espaces qui formatent ce texte) pourrait bien être un peu plus lent que SpannableString
o SpannedString
pour diverses choses. La différence de performance dépend de l'usage que l'on en fait.