หน้านี้จะอธิบายแนวทางปฏิบัติแนะนำสำหรับการโต้ตอบกับแผนที่การนําทางในแอป
ใช้ SupportNavigationFragment
แทน NavigationView
เมื่อเป็นไปได้
SupportNavigationFragment
เป็น Wrapper เพื่อความสะดวกในการจัดการ Callback ของวัฏจักรชีวิตของ NavigationView
คุณจึงไม่ต้องจัดการ Callback เหล่านี้ด้วยตนเอง วิธีนี้ทำให้เกิดข้อผิดพลาดน้อยลงและเป็นวิธีที่แนะนำในการใช้การนําทางในแอป เมื่อใช้ SupportNavigationFragment
โปรดอย่าเรียกใช้เหตุการณ์วงจรชีวิตของ NavigationView
หากใช้ NavigationView
ให้ใช้ลําดับที่เข้มงวดเมื่อเรียกใช้เมธอดของวงจร
NavigationView
โฮสต์แผนที่การนําทางและติดตามเหตุการณ์ในวงจรอย่างใกล้ชิดในฐานะกิจกรรมและส่วนต่างๆ ของ Android โดยดําเนินการเฉพาะเมื่อมีการเรียกเหตุการณ์ในวงจรเหล่านี้ NavigationView
จะดำเนินการเริ่มต้นหลายครั้งใน NavigationView#onCreate
และ NavigationView#onStart
รวมถึงล้างข้อมูลใน NavigationView#onStop
และ NavigationView#onDestroy
รวมถึงเมื่อประมวลผลเหตุการณ์อื่นๆ ของวงจร
NavigationView
เมธอดของวงจรมีความหมายเหมือนกับเมธอดของ Android Activity หรือ Fragment เช่น onCreate()
of NavigationView
แปลเป็น "onCreate()
จาก NavigationView
" โดยประมาณ และควรเรียกใช้โดยเหตุการณ์การเรียกกลับของวงจรจากแอตทริบิวต์หรือแฟรกเมนต์ Android เนื่องจาก NavigationView
ไลฟ์ไซเคิลคอลแบ็กจะอิงตามและเรียกใช้ตามลําดับเดียวกับไลฟ์ไซเคิลคอลแบ็กของ Android คุณจึงต้องจัดลําดับเมธอด NavigationView เหล่านี้อย่างเหมาะสม ไม่เช่นนั้น คุณอาจพบปัญหาหน่วยความจำรั่ว ข้อผิดพลาดเกี่ยวกับ UI ตำแหน่งไม่อัปเดต และปัญหาอื่นๆ
ดูข้อมูลเพิ่มเติมเกี่ยวกับวงจรของกิจกรรม Android ได้ที่ส่วนแนวคิดเกี่ยวกับวงจรของกิจกรรมในเอกสารประกอบสำหรับนักพัฒนาแอป Android
ตารางต่อไปนี้แสดงกรณีที่ควรเรียกใช้เมธอดอื่นๆ ของวงจรหลังจากเมธอดของวงจรที่ระบุ
วิธีการเกี่ยวกับวงจร | เรียกใช้ที่ใดในวงจรชีวิตของกิจกรรม | เรียกใช้หลังจากเมธอดวงจรชีวิตของใคร |
---|---|---|
onConfigurationChanged()
|
เรียกใช้เมื่อ UI อยู่เบื้องหน้าและการกำหนดค่ามีการเปลี่ยนแปลง | เสมอหลังจาก onStart()
|
onTrimMemory()
|
เรียกใช้เมื่อกิจกรรมทำงานอยู่เบื้องหลัง | หลังจาก onPause() เสมอ
|
onSaveInstance()
|
เรียกใช้ก่อนที่ระบบจะทำลายกิจกรรม | เสมอหลังจาก onStop()
|
อย่าเรียกเมธอดวงจรชีวิตของเมธอดเหล่านี้หลายครั้งโดยไม่เรียกใช้เมธอดปิดที่เกี่ยวข้องก่อน นอกจากนี้ โปรดทราบว่าหากแอปจัดการการเรียกกลับของวงจรชีวิตของ Android บางรายการเอง และมีการเพิ่ม NavigationView
ลงใน FRGMENT หลังจากสร้างหรือเริ่มต้น แอปควรเรียกใช้เมธอดที่เฉพาะเจาะจงด้วยตนเองตามลําดับที่เหมาะสมเพื่อเริ่มต้น Navigation SDK อย่างถูกต้อง
ดูคําแนะนําเพิ่มเติมเกี่ยวกับการใช้วิธีการเหล่านี้ได้ที่แอปสาธิต Navigation SDK
หากใช้ NavigationView
ให้เรียกเหตุการณ์วงจรจากกิจกรรมหรือฟragment เท่านั้น
หากต้องการจัดลําดับเมธอดวงจรชีวิตของแอตทริบิวต์อย่างเคร่งครัด ให้เรียกเหตุการณ์เหล่านี้จาก callbacks ของวงจรชีวิตของแอตทริบิวต์หรือแฟรกเมนต์ ซึ่งจะรับเหตุการณ์เหล่านี้ตามลําดับ วิธีนี้ช่วยให้แอปไม่ต้องประสานงานระหว่างข้อมูลโค้ดที่แยกส่วนและกิจกรรม และทำให้ไม่มีการเรียกซ้ำ