getMapAsync() - 调用一次并保存结果,还是每次我需要地图时调用?
getMapAsync() - call once and save the result, or call every time I need the map?
Google Play 服务 6.5 添加了 getMapAsync
方法,它允许我们异步检索支持 MapFragment
(或 MapView
的 GoogleMap
对象).文档指出
The GoogleMap object provided by the callback is non-null.
我不太理解为什么这里需要异步检索(即什么情况下会导致已弃用的 getMap
方法变为 return null
),其中有让我想到了以下问题:
使用 MapFragment
时,我是否应该在 onCreate
中调用一次 getMapAsync
,存储(非空)GoogleMap
return回调,然后在我的 class? 或者,是不是每次需要和GoogleMap
对象交互的时候调用getMapAsync
,做all map-相应回调中的相关工作?
第一个选项会导致更紧凑的代码,因此如果可能我更愿意使用它。我存储的 GoogleMap
对象是否有可能变成 'stale' 或 null
的风险(在这种情况下,第二个选项会更安全)?
Google的地图相关示例,位于目录
<path-to-sdk>/extras/google/google_play_services/samples/maps
保留一个参考,所以我相信这应该没问题。
您必须使用异步调用的原因是(我想),因为地图可能在初始化时进行网络请求(要下载图块等,请参阅文档以获取更多信息)。如果是这种情况,地图需要在单独的线程上(部分)初始化。因此,您必须等到初始化完成后才能获得 GoogleMap
.
getMap()
函数可以returnGoogleMap
正确,但不能保证。如果过早调用 getMap()
函数,地图将不会初始化,它将 return 为 null。
Google Play 服务 6.5 添加了 getMapAsync
方法,它允许我们异步检索支持 MapFragment
(或 MapView
的 GoogleMap
对象).文档指出
The GoogleMap object provided by the callback is non-null.
我不太理解为什么这里需要异步检索(即什么情况下会导致已弃用的 getMap
方法变为 return null
),其中有让我想到了以下问题:
使用 MapFragment
时,我是否应该在 onCreate
中调用一次 getMapAsync
,存储(非空)GoogleMap
return回调,然后在我的 class? 或者,是不是每次需要和GoogleMap
对象交互的时候调用getMapAsync
,做all map-相应回调中的相关工作?
第一个选项会导致更紧凑的代码,因此如果可能我更愿意使用它。我存储的 GoogleMap
对象是否有可能变成 'stale' 或 null
的风险(在这种情况下,第二个选项会更安全)?
Google的地图相关示例,位于目录
<path-to-sdk>/extras/google/google_play_services/samples/maps
保留一个参考,所以我相信这应该没问题。
您必须使用异步调用的原因是(我想),因为地图可能在初始化时进行网络请求(要下载图块等,请参阅文档以获取更多信息)。如果是这种情况,地图需要在单独的线程上(部分)初始化。因此,您必须等到初始化完成后才能获得 GoogleMap
.
getMap()
函数可以returnGoogleMap
正确,但不能保证。如果过早调用 getMap()
函数,地图将不会初始化,它将 return 为 null。