ปรับปรุงเวลาในการตอบสนองของการเริ่มต้น

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

แนวทางปฏิบัติแนะนำ

จัดส่งด้วยโปรไฟล์พื้นฐาน

Baseline Profile ช่วยปรับปรุงความเร็วในการเรียกใช้โค้ดประมาณ 30% ตั้งแต่การเปิดตัวครั้งแรกโดยหลีกเลี่ยงการตีความและขั้นตอนการคอมไพล์แบบทันที (JIT) สำหรับเส้นทางโค้ดที่รวมไว้ การจัดส่ง Baseline Profile ในแอปจะช่วยให้ Android Runtime (ART) สามารถเพิ่มประสิทธิภาพเส้นทางโค้ดที่รวมไว้ผ่านการคอมไพล์ Ahead of Time (AOT) ซึ่งจะช่วยเพิ่มประสิทธิภาพสำหรับผู้ใช้ใหม่ทุกคนและในการอัปเดตแอปทุกครั้ง

หลีกเลี่ยงการเริ่มต้นใช้งานแบบรีบร้อน

หลีกเลี่ยงการทำงานที่กระตือรือร้นซึ่งอาจไม่จำเป็นในลำดับการเริ่มต้นของแอป สถานการณ์ที่แอปของคุณน่าจะเริ่มกระบวนการมากที่สุดคือการ เปิดแอป อย่างไรก็ตาม WorkManager, JobScheduler, BroadcastReceiver, บริการที่เชื่อมโยง และไลบรารีการเริ่มต้น AndroidX ก็สามารถเริ่มกระบวนการของแอปในเบื้องหลังได้เช่นกัน หากเป็นไปได้ ให้หลีกเลี่ยงการเริ่มต้นใช้งานสิ่งต่างๆ โดยไม่จำเป็นในคลาส Application ไลบรารีจำนวนมาก มีการเริ่มต้นตามต้องการ ซึ่งช่วยให้คุณเรียกใช้ได้เฉพาะเมื่อจำเป็นเท่านั้น

ย้ายงานจากเธรด UI ไปยังเธรดเบื้องหลัง

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

วิเคราะห์และแก้ไขการแย่งกันอ่านดิสก์อย่างรุนแรง

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

หลีกเลี่ยง IPC แบบซิงโครนัส

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