เพิ่มประสิทธิภาพมุมมองที่กำหนดเอง

เมื่อมีมุมมองที่ออกแบบมาอย่างดีซึ่งตอบสนองต่อท่าทางสัมผัสและเปลี่ยนสถานะไปมา ให้ตรวจสอบว่ามุมมองทำงานได้อย่างรวดเร็ว ตรวจสอบว่าภาพเคลื่อนไหวทำงานที่ 60 เฟรมต่อวินาทีอย่างสม่ำเสมอเพื่อหลีกเลี่ยงไม่ให้ UI ทำงานช้าหรือกระตุกระหว่างการเล่น

เร่งความเร็วในการดู

หากต้องการเพิ่มความเร็วในการดู ให้นำโค้ดที่ไม่จำเป็นออกจากกิจวัตรที่เรียกใช้บ่อย เริ่ม ด้วย onDraw() ซึ่งให้ผลตอบแทนสูงสุด โดยเฉพาะอย่างยิ่ง ให้หลีกเลี่ยงการจัดสรรใน onDraw() เนื่องจากการจัดสรรอาจทำให้เกิดการเก็บขยะซึ่งทำให้เกิดอาการกระตุก จัดสรรออบเจ็กต์ ระหว่างการเริ่มต้นหรือระหว่างภาพเคลื่อนไหว อย่านำการจัดสรรมาใช้ในขณะที่ภาพเคลื่อนไหว กำลังทำงาน

นอกจากจะทำให้onDraw()มีขนาดเล็กลงแล้ว ให้เรียกใช้ฟังก์ชันนี้น้อยครั้งที่สุดเท่าที่จะเป็นไปได้ การโทรหา onDraw() ส่วนใหญ่เกิดจากการโทรหา invalidate() ดังนั้นให้ยกเลิก การโทรหา invalidate() ที่ไม่จำเป็น

การดำเนินการอีกอย่างที่ใช้ต้นทุนสูงมากคือการข้ามเลย์เอาต์ เมื่อมุมมองเรียกใช้ requestLayout() ระบบ UI ของ Android จะข้ามลำดับชั้นของมุมมองทั้งหมดเพื่อดูว่าแต่ละมุมมองต้องมีขนาดเท่าใด หากพบการวัดที่ขัดแย้งกัน ระบบอาจข้ามผ่านลําดับชั้นหลายครั้ง นักออกแบบ UI บางครั้งก็สร้างลำดับชั้นที่ซับซ้อนของออบเจ็กต์ที่ซ้อนกัน ViewGroup ลำดับชั้นของมุมมองที่ซับซ้อนเหล่านี้ทำให้เกิดปัญหาด้านประสิทธิภาพ ดังนั้นให้สร้างลำดับชั้นของมุมมองให้ตื้นที่สุด

หากมี UI ที่ซับซ้อน ให้ลองเขียน ViewGroup ที่กำหนดเองเพื่อจัดวางเลย์เอาต์ มุมมองที่กำหนดเองจะแตกต่างจากมุมมองในตัวตรงที่สามารถกำหนดสมมติฐานเฉพาะแอปพลิเคชันเกี่ยวกับขนาด และรูปร่างขององค์ประกอบย่อยได้ จึงไม่ต้องข้ามองค์ประกอบย่อยเพื่อคำนวณการวัด

เช่น หากคุณมี ViwGroup ที่กำหนดเองซึ่งไม่ปรับขนาดของตัวเองให้พอดีกับ มุมมองย่อยทั้งหมด คุณจะหลีกเลี่ยงค่าใช้จ่ายในการวัดมุมมองย่อยทั้งหมดได้ การเพิ่มประสิทธิภาพนี้ จะทำไม่ได้หากคุณใช้เลย์เอาต์ในตัวที่รองรับ Use Case ที่หลากหลาย