其他分享
首页 > 其他分享> > android – getMapAsync() – 调用一次并保存结果,或者每次需要地图时调用?

android – getMapAsync() – 调用一次并保存结果,或者每次需要地图时调用?

作者:互联网

Google Play Services 6.5添加了getMapAsync方法,该方法允许我们异步检索支持MapFragment(或MapView)的GoogleMap对象.文件说明了这一点

The GoogleMap object provided by the callback is non-null.

我对这里为什么需要异步检索没有很好的理解(即,什么情况可能导致不推荐的getMap方法返回null),这引出了以下问题:

使用MapFragment时,我应该在onCreate中调用getMapAsync一次,存储回调返回的(非空)GoogleMap,然后在我的类中的其他地方引用这个存储的结果吗?或者,我是否应该在每次需要与GoogleMap对象进行交互时调用getMapAsync,并在相应的回调中执行所有与地图相关的工作?

第一个选项导致更紧凑的代码,所以我更愿意尽可能使用它.我存储的GoogleMap对象是否存在“陈旧”或无效的风险(在这种情况下,第二个选项会更安全)?

解决方法:

Google的地图相关示例,位于目录中

<path-to-sdk>/extras/google/google_play_services/samples/maps

保持参考,所以我相信这应该没问题.

您必须使用异步调用的原因是(我猜),因为地图可能在初始化时执行网络请求(下载磁贴等,请参阅文档以获取更多信息).如果是这种情况,则需要在单独的线程上(部分)初始化映射.因此,您必须等到初始化完成后才能获得GoogleMap.

getMap()函数可以正确返回GoogleMap,但不能保证.如果过早调用getMap()函数,地图将不会被初始化,它将返回null.

标签:android-maps-v2,android,google-play-services,google-maps
来源: https://codeday.me/bug/20190830/1765838.html