Mục đích của các giao diện này là gì?
CharSequencelà một giao diện Java tiêu chuẩn đại diện cho một chuỗi các ký tự. Stringlà cách triển khai cụ thể được sử dụng phổ biến nhất CharSequence, tiếp theo là StringBuilder.
Spannedlà một CharSequencevới "nhịp" cho biết định dạng áp dụng cho các phần của văn bản, nơi không thể sửa đổi những khoảng đó.
Spannablelà một Spanned, bổ sung khả năng sửa đổi các nhịp (để thêm hoặc xóa định dạng), nhưng không sửa đổi chính văn bản.
SpannedStringlà một triển khai cụ thể của Spannedgiao diện.
SpannableStringlà một triển khai cụ thể của Spannablegiao diện.
trong những tình huống nào nó thường sử dụng chúng nhất?
Khi có một phương thức trả về một (ví dụ: getText()trên an EditText) hoặc khi có một phương thức nhận một làm tham số (ví dụ: setText()trên a TextView).

Trường hợp sử dụng được trích dẫn của bạn Html.fromHtml()có lẽ là phổ biến nhất trong phát triển Android thông thường, vì a TextViewvới a Spannedcó trọng lượng nhẹ hơn nhiều so với a WebView. Tuy nhiên, có những trường hợp sử dụng khác, chẳng hạn như:
Những trường hợp nào là tốt nhất để tránh sử dụng chúng?
Chúng đặc biệt khủng khiếp trong việc chống lại chứng hói đầu, loại bỏ tuyết, sửa chữa máy bơm nhiệt, làm bánh ngọt, v.v.
:-)
Có bất kỳ tác động hiệu suất rõ ràng nào cần được xem xét khi sử dụng bất kỳ một trong số chúng không?
Theo định nghĩa, các giao diện không có "tác động đến hiệu suất" - chúng chỉ là mô tả của một API.
Tôi không biết rằng SpannableStringnó chậm hơn đáng kể so SpannedStringvới bất kỳ hoạt động cụ thể nào. Tuy nhiên, SpannableStringBuilder(cho phép thao tác văn bản ngoài các nhịp định dạng văn bản đó) cũng có thể chậm hơn một chút so với SpannableStringhoặc SpannedStringđối với nhiều thứ khác nhau. Tuy nhiên, sự khác biệt về hiệu suất có đủ quan trọng hay không sẽ phụ thuộc vào cách sử dụng.