หน้านี้จะอธิบายแนวทางปฏิบัติแนะนำสำหรับการโต้ตอบกับแผนที่การนําทางในแอป
ใช้ SupportNavigationFragment
แทน NavigationView
เมื่อเป็นไปได้
SupportNavigationFragment
เป็น Wrapper เพื่อความสะดวกในการจัดการการเรียกกลับของวงจรชีวิตของ NavigationView
คุณจึงไม่ต้องจัดการการเรียกกลับเหล่านี้ด้วยตนเอง วิธีนี้ทำให้เกิดข้อผิดพลาดน้อยลงและเป็นวิธีที่แนะนำในการใช้การนําทางในแอป เมื่อใช้ SupportNavigationFragment
โปรดอย่าเรียกใช้เหตุการณ์วงจรชีวิตของ NavigationView
หากใช้ NavigationView
ให้ใช้ลําดับที่เข้มงวดเมื่อเรียกใช้เมธอดของวงจร
NavigationView
โฮสต์แผนที่การนําทางและติดตามเหตุการณ์ในวงจรอย่างใกล้ชิดในฐานะกิจกรรมและส่วนต่างๆ ของ Android โดยดําเนินการเฉพาะเมื่อมีการเรียกเหตุการณ์ในวงจรเหล่านี้ NavigationView
จะทำการเริ่มต้นหลายครั้งใน NavigationView#onCreate
และ NavigationView#onStart
รวมถึงล้างข้อมูลใน NavigationView#onStop
และ NavigationView#onDestroy
รวมถึงเมื่อประมวลผลเหตุการณ์อื่นๆ ในวงจร
NavigationView
เมธอดเกี่ยวกับวงจรของแอปมีความหมายเหมือนกับเมธอดสำหรับแอ็กทีวิตีหรือแฟรกเมนต์ของ Android ตัวอย่างเช่น 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 ของวงจรชีวิตของแอตทริบิวต์หรือแฟรกเมนต์ ซึ่งจะรับเหตุการณ์เหล่านี้ตามลำดับ วิธีนี้ช่วยให้แอปไม่ต้องประสานงานระหว่างข้อมูลโค้ดที่แยกส่วนและกิจกรรม และทำให้ไม่มีการเรียกซ้ำ