Apa tujuan dari antarmuka ini?
CharSequenceadalah antarmuka Java standar yang mewakili urutan karakter. Stringadalah implementasi konkret yang paling umum digunakan CharSequence, diikuti oleh StringBuilder.
Spannedadalah CharSequencedengan "span" yang menunjukkan pemformatan untuk diterapkan ke bagian teks, di mana span tersebut tidak dapat diubah.
Spannableadalah Spanned, menambahkan kemampuan untuk mengubah bentang (untuk menambah atau menghapus pemformatan), tetapi tidak untuk mengubah teks itu sendiri.
SpannedStringadalah implementasi konkret dari Spannedantarmuka.
SpannableStringadalah implementasi konkret dari Spannableantarmuka.
dalam skenario mana yang paling umum untuk menggunakannya?
Ketika ada metode yang mengembalikan satu (misalnya, getText()pada EditText) atau ketika ada metode yang mengambilnya sebagai parameter (misalnya, setText()pada a TextView).

Kutipan kasus penggunaan Anda Html.fromHtml()mungkin yang paling umum dalam pengembangan Android konvensional, karena a TextViewdengan Spannedbobot yang jauh lebih ringan daripada a WebView. Namun, ada kasus penggunaan lain, seperti:
Dalam kasus apa yang terbaik untuk menghindari penggunaannya?
Mereka sangat buruk dalam memerangi kebotakan, menghilangkan salju, memperbaiki pompa panas, membuat souffle, dll.
:-)
Apakah ada dampak kinerja yang jelas untuk dipertimbangkan saat menggunakan salah satunya?
Antarmuka, menurut definisi, tidak memiliki "dampak kinerja" - antarmuka hanyalah deskripsi API.
Saya tidak menyadari bahwa SpannableStringsecara signifikan lebih lambat daripada SpannedStringpada operasi tertentu. Namun, SpannableStringBuilder(yang memungkinkan untuk memanipulasi teks selain span yang memformat teks itu) mungkin sedikit lebih lambat daripada SpannableStringatau SpannedStringuntuk berbagai hal. Apakah perbedaan kinerja cukup penting atau tidak akan tergantung pada penggunaan.