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

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

เพิ่มความเร็วของมุมมอง

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

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

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

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

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