本页介绍了在应用中与导航地图互动的最佳实践。
尽可能使用 SupportNavigationFragment
而非 NavigationView
SupportNavigationFragment
是一个封装容器,用于便于处理 NavigationView
生命周期回调,因此您无需自行管理这些回调。此方法不易出错,也是在应用中使用 Navigation 的首选方式。使用 SupportNavigationFragment
时,请勿调用 NavigationView
生命周期事件。
如果使用 NavigationView
,请在调用生命周期方法时使用严格的排序
NavigationView
托管导航图,并像 Android activity 和 fragment 一样密切跟踪生命周期事件,在调用这些生命周期事件时执行特定操作。NavigationView
会在 NavigationView#onCreate
和 NavigationView#onStart
上执行多次初始化,并在 NavigationView#onStop
和 NavigationView#onDestroy
上执行清理操作,以及在处理其他生命周期事件时执行清理操作。
NavigationView
生命周期方法与 Android activity 或 fragment 的含义相同。例如,NavigationView
的 onCreate()
大致可转换为 Android activity 或 fragment 中的生命周期回调,并且应由这些生命周期回调调用。由于 NavigationView
生命周期回调基于 Android 生命周期回调,并且其调用顺序与 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 之间协调,也不会导致重复调用。