Bu arayüzlerin amacı nedir?
CharSequencebir karakter dizisini temsil eden standart bir Java arayüzüdür. Stringen yaygın kullanılan somut uygulamadır CharSequence, ardından StringBuilder.
Spanneda, CharSequenceo açıklıklı değiştirilemez metin bölümlerini uygulamak için biçimlendirme belirten "yayılma" ile.
SpannableBir olan Spanned, yayılma değiştirme yeteneği ekleyerek (eklemek veya biçimlendirme kaldırmak), ama değil , metnin kendisini değiştirmek için.
SpannedStringSpannedarayüzün somut bir uygulamasıdır .
SpannableStringSpannablearayüzün somut bir uygulamasıdır .
Bunları kullanmak en çok hangi senaryolarda yaygındır?
Bir yöntem olduğunda bu döner bir (örneğin getText()bir ile EditText) ya da (bakınız, örneğin, bir parametre olarak alır bir yöntem olduğu zaman setText()bir ile TextView).

Belirtilen kullanım durumunuz, Html.fromHtml()geleneksel Android geliştirmede belki de en yaygın olanıdır, çünkü a TextViewile a Spanned, a'dan çok daha hafiftir WebView. Ancak, aşağıdakiler gibi başka kullanım durumları da vardır:
Hangi durumlarda bunları kullanmaktan kaçınmak en iyisidir?
Kellik, kar temizleme, ısı pompası onarımı, sufle yapma vb. İle mücadelede olağanüstü derecede kötüdürler.
:-)
Bunlardan herhangi birini kullanırken dikkate alınması gereken bariz performans etkileri var mı?
Arayüzlerin tanımları gereği "performans etkileri" yoktur - bunlar yalnızca bir API'nin açıklamasıdır.
Bunun herhangi bir operasyondan SpannableStringçok daha yavaş olduğunun farkında değilim SpannedString. Bununla birlikte, SpannableStringBuilder(bu, metni biçimlendiren aralıklara ek olarak metni değiştirmeye izin verir), çeşitli şeylerden SpannableStringveya SpannedStringçeşitli şeylerden biraz daha yavaş olabilir . Performans farklılıklarının önemli olup olmadığı, kullanıma bağlı olacaktır.