เมื่อมีมุมมองที่ออกแบบมาอย่างดีซึ่งตอบสนองต่อท่าทางสัมผัสและเปลี่ยนสถานะไปมา ให้ตรวจสอบว่ามุมมองทำงานได้อย่างรวดเร็ว ตรวจสอบว่าภาพเคลื่อนไหวทำงานที่ 60 เฟรมต่อวินาทีอย่างสม่ำเสมอเพื่อหลีกเลี่ยงไม่ให้ UI ทำงานช้าหรือกระตุกระหว่างการเล่น
เร่งความเร็วในการดู
หากต้องการเพิ่มความเร็วในการดู ให้นำโค้ดที่ไม่จำเป็นออกจากกิจวัตรที่เรียกใช้บ่อย เริ่ม
ด้วย
onDraw()
ซึ่งให้ผลตอบแทนสูงสุด โดยเฉพาะอย่างยิ่ง ให้หลีกเลี่ยงการจัดสรรใน onDraw()
เนื่องจากการจัดสรรอาจทำให้เกิดการเก็บขยะซึ่งทำให้เกิดอาการกระตุก จัดสรรออบเจ็กต์
ระหว่างการเริ่มต้นหรือระหว่างภาพเคลื่อนไหว อย่านำการจัดสรรมาใช้ในขณะที่ภาพเคลื่อนไหว
กำลังทำงาน
นอกจากจะทำให้onDraw()
มีขนาดเล็กลงแล้ว ให้เรียกใช้ฟังก์ชันนี้น้อยครั้งที่สุดเท่าที่จะเป็นไปได้ การโทรหา onDraw()
ส่วนใหญ่เกิดจากการโทรหา
invalidate()
ดังนั้นให้ยกเลิก
การโทรหา invalidate()
ที่ไม่จำเป็น
การดำเนินการอีกอย่างที่ใช้ต้นทุนสูงมากคือการข้ามเลย์เอาต์ เมื่อมุมมองเรียกใช้
requestLayout()
ระบบ UI ของ Android จะข้ามลำดับชั้นของมุมมองทั้งหมดเพื่อดูว่าแต่ละมุมมองต้องมีขนาดเท่าใด หากพบการวัดที่ขัดแย้งกัน ระบบอาจข้ามผ่านลําดับชั้นหลายครั้ง นักออกแบบ UI
บางครั้งก็สร้างลำดับชั้นที่ซับซ้อนของออบเจ็กต์ที่ซ้อนกัน
ViewGroup
ลำดับชั้นของมุมมองที่ซับซ้อนเหล่านี้ทำให้เกิดปัญหาด้านประสิทธิภาพ ดังนั้นให้สร้างลำดับชั้นของมุมมองให้ตื้นที่สุด
หากมี UI ที่ซับซ้อน ให้ลองเขียน ViewGroup
ที่กำหนดเองเพื่อจัดวางเลย์เอาต์
มุมมองที่กำหนดเองจะแตกต่างจากมุมมองในตัวตรงที่สามารถกำหนดสมมติฐานเฉพาะแอปพลิเคชันเกี่ยวกับขนาด
และรูปร่างขององค์ประกอบย่อยได้ จึงไม่ต้องข้ามองค์ประกอบย่อยเพื่อคำนวณการวัด
เช่น หากคุณมี ViwGroup
ที่กำหนดเองซึ่งไม่ปรับขนาดของตัวเองให้พอดีกับ
มุมมองย่อยทั้งหมด คุณจะหลีกเลี่ยงค่าใช้จ่ายในการวัดมุมมองย่อยทั้งหมดได้ การเพิ่มประสิทธิภาพนี้
จะทำไม่ได้หากคุณใช้เลย์เอาต์ในตัวที่รองรับ Use Case ที่หลากหลาย