อะไรคือจุดประสงค์ของอินเทอร์เฟซเหล่านี้?
CharSequence
เป็นอินเตอร์เฟส Java มาตรฐานที่แสดงลำดับของอักขระ String
คือการปฏิบัติที่เป็นรูปธรรมมากที่สุดที่ใช้ตามด้วยCharSequence
StringBuilder
Spanned
เป็นCharSequence
"ช่วง" ที่ระบุการจัดรูปแบบเพื่อใช้กับส่วนของข้อความโดยที่ช่วงเหล่านั้นไม่สามารถแก้ไขได้
Spannable
คือการSpanned
เพิ่มความสามารถในการแก้ไขช่วง (เพื่อเพิ่มหรือลบการจัดรูปแบบ) แต่ไม่สามารถแก้ไขข้อความได้
SpannedString
คือการนำSpanned
อินเทอร์เฟซมาใช้อย่างเป็นรูปธรรม
SpannableString
คือการนำSpannable
อินเทอร์เฟซมาใช้อย่างเป็นรูปธรรม
มักใช้ในสถานการณ์ใด
เมื่อมีเมธอดที่คืนค่าหนึ่ง (เช่นgetText()
บน an EditText
) หรือเมื่อมีวิธีที่รับหนึ่งเป็นพารามิเตอร์ (เช่นsetText()
บน a TextView
)
กรณีการใช้งานที่คุณอ้างถึงHtml.fromHtml()
อาจเป็นเรื่องธรรมดาที่สุดในการพัฒนา Android ทั่วไปเนื่องจาก a TextView
มีSpanned
น้ำหนักเบากว่าไฟล์WebView
. อย่างไรก็ตามมีกรณีการใช้งานอื่น ๆ เช่น:
ควรหลีกเลี่ยงการใช้ในกรณีใด
พวกเขาแย่มากในการต่อสู้กับศีรษะล้านการกำจัดหิมะการซ่อมแซมปั๊มความร้อนการทำโซเฟเล่ ฯลฯ
:-)
มีผลกระทบด้านประสิทธิภาพที่ชัดเจนที่ต้องพิจารณาเมื่อใช้อย่างใดอย่างหนึ่งหรือไม่?
อินเทอร์เฟซตามคำจำกัดความไม่มี "ผลกระทบด้านประสิทธิภาพ" - เป็นเพียงคำอธิบายของ API
ฉันไม่ทราบว่าSpannableString
ช้ากว่าSpannedString
การดำเนินการใด ๆ อย่างมาก อย่างไรก็ตามSpannableStringBuilder
(ซึ่งอนุญาตให้จัดการข้อความนอกเหนือจากช่วงที่จัดรูปแบบข้อความนั้น) อาจช้ากว่าSpannableString
หรือSpannedString
สำหรับสิ่งต่างๆเล็กน้อย ความแตกต่างของประสิทธิภาพเพียงพอหรือไม่นั้นขึ้นอยู่กับการใช้งาน