导航地图互动最佳实践

本页介绍了在应用中与导航地图互动的最佳实践。

尽可能使用 SupportNavigationFragment 而不是 NavigationView

SupportNavigationFragment 是一个封装容器,可方便地处理 NavigationView 生命周期回调,因此您无需自行管理这些回调。此方法不易出错,是应用中使用 Navigation 的首选方式。使用 SupportNavigationFragment 时,请务必不要调用 NavigationView 生命周期事件。

如果使用 NavigationView,请在调用生命周期方法时使用严格的顺序

NavigationView 托管导航地图,并密切关注 Android activity 和 fragment 的生命周期事件,在这些生命周期事件被调用时采取特定操作。NavigationView 会在 NavigationView#onCreateNavigationView#onStart 上执行多次初始化,在 NavigationView#onStopNavigationView#onDestroy 上执行清理,以及在处理其他生命周期事件时执行清理。

NavigationView 生命周期方法的含义与 Android activity 或 fragment 的相同。例如,NavigationViewonCreate() 大致相当于 Android activity 或 fragment 的生命周期回调,并且应由这些回调来调用。由于 NavigationView 生命周期回调基于 Android 生命周期回调,并且以相同的顺序调用,因此必须严格按照顺序调用这些 NavigationView 方法。否则,您可能会遇到内存泄漏、界面错误、位置信息未更新等问题。

如需详细了解 Android activity 生命周期,请参阅 Android 开发者文档中的activity 生命周期概念部分。

下表显示了在指定生命周期方法之后,应何时调用其他生命周期方法:

生命周期方法 在 activity 生命周期的哪个阶段调用 在哪个生命周期方法之后调用
onConfigurationChanged() 当界面位于前台且配置发生更改时调用。 始终在 onStart() 之后
onTrimMemory() 当 activity 处于后台时调用。 始终在 onPause() 之后
onSaveInstance() 在销毁 activity 之前调用。 始终在 onStop()之后

请勿在未先调用相应关闭方法的情况下多次调用这些生命周期方法。此外,请注意,如果这些 Android 生命周期回调中的某些回调由应用本身管理,并且在创建或启动后将 NavigationView 添加到 fragment,则应用应按正确的顺序自行调用特定方法,以便正确初始化 Navigation SDK。

如需有关如何使用这些方法的更多指导,请参阅 Navigation SDK 演示应用

如果使用 NavigationView,请从 activity 或 fragment(而非两者)调用生命周期事件

为了保持生命周期方法的严格顺序,请从 activity 或 fragment 生命周期回调中调用这些事件,这些回调会按顺序接收这些事件。这种方法可确保应用无需在 fragment 和 activity 之间进行协调,也不会导致重复调用。