อะไรคือจุดประสงค์ของอินเทอร์เฟซเหล่านี้?
CharSequenceเป็นอินเตอร์เฟส Java มาตรฐานที่แสดงลำดับของอักขระ Stringคือการปฏิบัติที่เป็นรูปธรรมมากที่สุดที่ใช้ตามด้วยCharSequenceStringBuilder
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สำหรับสิ่งต่างๆเล็กน้อย ความแตกต่างของประสิทธิภาพเพียงพอหรือไม่นั้นขึ้นอยู่กับการใช้งาน