Mục đích của các giao diện này là gì?
CharSequence
là một giao diện Java tiêu chuẩn đại diện cho một chuỗi các ký tự. String
là cách triển khai cụ thể được sử dụng phổ biến nhất CharSequence
, tiếp theo là StringBuilder
.
Spanned
là một CharSequence
vớ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 đó.
Spannable
là 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.
SpannedString
là một triển khai cụ thể của Spanned
giao diện.
SpannableString
là một triển khai cụ thể của Spannable
giao 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 TextView
với a Spanned
có 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 SpannableString
nó chậm hơn đáng kể so SpannedString
vớ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 SpannableString
hoặ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.