本頁說明在應用程式中與導航地圖互動的最佳做法。
盡可能使用 SupportNavigationFragment
,而非 NavigationView
SupportNavigationFragment
是 NavigationView
生命週期回呼的包裝函式,方便您處理這些回呼,不必自行管理。這個方法比較不容易出錯,是應用程式中使用 Navigation 的首選方式。使用 SupportNavigationFragment
時,請務必不要叫用 NavigationView
生命週期事件。
如果使用 NavigationView
,請在叫用生命週期方法時嚴格遵守順序
NavigationView
會代管 Navigation 地圖,並密切追蹤 Android 活動和片段的生命週期事件,在叫用這些生命週期事件時採取特定動作。NavigationView
會在 NavigationView#onCreate
和 NavigationView#onStart
上執行多次初始化,並在 NavigationView#onStop
和 NavigationView#onDestroy
上執行清除作業,以及處理其他生命週期事件時。
NavigationView
生命週期方法的意義與 Android 活動或片段相同。舉例來說,NavigationView
的 onCreate()
大致會轉譯為 Android 活動或片段的生命週期回呼,並由這些回呼叫用。由於 NavigationView
生命週期回呼是以 Android 生命週期回呼為基礎,且呼叫順序相同,因此必須嚴格遵守這些 NavigationView 方法的順序。否則可能會發生記憶體洩漏、UI 錯誤、位置資訊未更新等問題。
如要進一步瞭解 Android 活動生命週期,請參閱 Android 開發人員說明文件中的「活動生命週期概念」一節。
下表顯示在指定生命週期方法之後,應呼叫其他生命週期方法的時間:
生命週期方法 | 在活動生命週期中呼叫的位置 | 在下列生命週期方法後呼叫 |
---|---|---|
onConfigurationChanged()
|
當 UI 位於前景且設定變更時,系統會叫用此函式。 | 一律在 onStart() 之後
|
onTrimMemory()
|
活動在背景時會叫用此方法。 | 一律在 onPause() 之後
|
onSaveInstance()
|
在活動遭到刪除前呼叫。 | 一律在 onStop() 之後
|
請勿多次呼叫這些生命週期方法,否則必須先呼叫對應的關閉方法。此外,請注意,如果部分 Android 生命週期回呼是由應用程式本身管理,且 NavigationView
是在建立或啟動後新增至片段,應用程式應以正確順序自行呼叫特定方法,才能正確初始化 Navigation SDK。
如需使用這些方法的其他指引,請參閱 Navigation SDK 示範應用程式。
如果使用 NavigationView
,請從活動或片段 (而非兩者) 叫用生命週期事件
為維持生命週期方法的嚴格順序,請從活動或片段生命週期回呼中叫用這些事件,這些回呼會依序接收這些事件。這種做法可確保應用程式不必在片段和活動之間協調,也不會導致重複呼叫。