谷歌最近宣布了导航 SDK,它可以让您将熟悉的 Google 地图逐向导航体验无缝集成到您的 Android 和 iOS 应用程序中。
这篇博文概述了一些最佳实践,您可以使用这些实践为您的 Android 应用程序使用导航 SDK 构建流畅、一致且可靠的导航体验。
与导航地图交互
与 Navigation SDK 集成时,您可以使用SupportNavigationFragment
( 的包装器)NavigationView
,也可以直接与 交互NavigationView
。在大多数情况下,我们建议使用SupportNavigationFragment
。NavigationView
处理SupportNavigationFragment
生命NavigationView
周期回调,因此您无需自行管理它们。但是,如果您确实需要与 交互NavigationView
,请谨慎管理生命周期方法和事件。
最佳实践
- 尽可能使用
SupportNavigationFragment
而不是。NavigationView
- 如果使用
NavigationView
,则在调用生命周期方法时使用严格排序。 - 如果使用
NavigationView
,则从活动或片段调用生命周期事件,而不是同时从两者调用。
有关更多信息,请参阅导航 SDK 开发人员文档中的导航地图交互。
管理导航通知
无论用户是否设置了目的地,导航 通知都会在用户导航时显示,有助于确保位置更新的准确性。应用必须管理 Android 对从后台启动前台服务和从后台访问位置的限制,以最大限度地提高位置准确性、最大限度地减少电池消耗并避免内存泄漏。
最佳实践
- 向应用程序用户请求“始终允许”位置权限。
- 确保正确清理听众以清除导航通知。
- 重新调用
NavigationApi#initForegroundServiceManager
方法时,先调用NavigationApi#clearForegroundServiceManager
。
有关更多信息,请参阅导航 SDK 开发人员文档中的后台位置使用情况。
GoogleMap
与物体交互
除了允许您向应用添加导航体验之外,Android 版导航 SDK 还包含来自Android 版地图 SDK的非导航地图功能。非导航地图可通过GoogleMap
类访问。APIGoogleMap
允许您创建自定义地图体验,包括绘制多边形、自定义图标等。在GoogleMap
应用中实现功能时,务必将非导航地图与导航地图分开,并管理GoogleMap
与导航体验相关的生命周期。
最佳实践
GoogleMap
在与导航体验不同的地图实例上实现功能。- 用于
getMapAsync
获取GoogleMap
实例。
有关更多信息,请参阅导航 SDK 开发者文档中的GoogleMap 交互。
清理实例
清除不再需要的实例和会话对于避免内存泄漏和其他问题非常重要。特别是,一定要清除导航目的地并清理 GoogleMap 对象上的地图元素。
最佳实践
- 使用
Navigator#clearDestinations
以及Navigator#cleanup
导航会话何时完成。 - 清理
GoogleMap
不再需要的元素。
有关更多信息,请参阅导航 SDK 开发人员文档中的实例清理。
其他建议
除了上面描述的实施最佳实践之外,以下建议还可以帮助确保您及时了解最新的导航 SDK 开发情况:
- 使用 Maven 进行导航 SDK 构建。
- 使用最新的可用导航 SDK 版本。
- 随时了解强制性服务公告。
- 不要使用已弃用的方法。
- 在 GitHub 上关注我们的演示应用程序。
开始与导航 SDK 集成。 查看导航 SDK API 文档和参考。您可以遵循这些最佳实践,帮助确保您的用户获得流畅、可靠的导航体验。
如果您想了解更多谷歌地图的新功能套件或者想立即集成到您的应用中,请立即联系谷歌地图一级代理商 Cloud Ace云一!
电话:0755-26410916 邮箱:zixun@cloud-ace.com