Apa tujuan dari antarmuka ini?
CharSequence
adalah antarmuka Java standar yang mewakili urutan karakter. String
adalah implementasi konkret yang paling umum digunakan CharSequence
, diikuti oleh StringBuilder
.
Spanned
adalah CharSequence
dengan "span" yang menunjukkan pemformatan untuk diterapkan ke bagian teks, di mana span tersebut tidak dapat diubah.
Spannable
adalah Spanned
, menambahkan kemampuan untuk mengubah bentang (untuk menambah atau menghapus pemformatan), tetapi tidak untuk mengubah teks itu sendiri.
SpannedString
adalah implementasi konkret dari Spanned
antarmuka.
SpannableString
adalah implementasi konkret dari Spannable
antarmuka.
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 TextView
dengan Spanned
bobot 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 SpannableString
secara signifikan lebih lambat daripada SpannedString
pada operasi tertentu. Namun, SpannableStringBuilder
(yang memungkinkan untuk memanipulasi teks selain span yang memformat teks itu) mungkin sedikit lebih lambat daripada SpannableString
atau SpannedString
untuk berbagai hal. Apakah perbedaan kinerja cukup penting atau tidak akan tergantung pada penggunaan.