導航地圖互動的最佳做法

本頁面說明與應用程式中 Navigation 地圖互動的最佳做法。

盡可能使用 SupportNavigationFragment 取代 NavigationView

SupportNavigationFragment 是用於方便處理 NavigationView 生命週期回呼的包裝函式,因此您不必自行管理這些回呼。這個方法較不易發生錯誤,也是在應用程式中使用 Navigation 的首選方式。使用 SupportNavigationFragment 時,請務必不要叫用 NavigationView 生命週期事件。

如果使用 NavigationView,請在叫用生命週期方法時使用嚴格的排序

NavigationView 會代管 Navigation 地圖,並密切追蹤生命週期事件,以 Android 活動和片段的形式執行特定操作。NavigationView 會在 NavigationView#onCreateNavigationView#onStart 上執行多項初始化作業,並在 NavigationView#onStopNavigationView#onDestroy 上執行清理作業,以及處理其他生命週期事件時執行。

NavigationView 生命週期方法的含義與 Android 活動或片段相同。舉例來說,NavigationViewonCreate() 大致等同於,且應由 Android 活動或片段的生命週期回呼呼叫。由於 NavigationView 生命週期回呼會根據 Android 生命週期回呼的順序進行,並以相同順序叫用,因此必須為這些 NavigationView 方法建立強制排序。否則,您可能會遇到記憶體流失、UI 錯誤、位置未更新和其他問題。

如要進一步瞭解 Android 活動生命週期,請參閱 Android 開發人員說明文件中的「活動生命週期概念」一節。

下表顯示應在指定生命週期方法後,何時叫用其他生命週期方法:

生命週期方法 在活動生命週期中的哪個位置叫用 在哪個生命週期方法之後叫用
onConfigurationChanged() 當 UI 位於前景且設定有所變更時,系統會叫用此方法。 一律在 onStart() 之後
onTrimMemory() 當活動處於背景時會叫用。 一律在 onPause() 之後
onSaveInstance() 在活動銷毀前呼叫。 一律在 onStop() 之後

請勿在未先呼叫對應的關閉方法的情況下,多次呼叫這些生命週期方法。此外,請注意,如果部分 Android 生命週期回呼由應用程式本身管理,且 NavigationView 是在建立或啟動後新增至片段,則應用程式應以正確順序自行呼叫特定方法,才能正確初始化 Navigation SDK。

如需使用這些方法的其他指引,請參閱 Navigation SDK 示範應用程式

如果使用 NavigationView,請從活動或片段叫用生命週期事件,而非同時從兩者叫用

為維持生命週期方法的嚴格順序,請從活動或片段生命週期回呼中呼叫這些事件,這些回呼會依序接收這些事件。這種做法可確保應用程式不必在元件和活動之間協調,並避免造成重複呼叫。