導航地圖互動的最佳做法

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

盡可能使用 SupportNavigationFragment 取代 NavigationView

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

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

NavigationView 會代管導覽圖,並密切追蹤 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,請從活動或片段 (而非兩者) 叫用生命週期事件

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