MapsInitializer.initialize() 是线程安全的吗?

dim*_*suz 4 multithreading android google-maps-android-api-2

我正在使用MapsInitializer.initialize(...)方法为我的 MapView 准备 Google Maps Android API v2 内部结构。目前它在托管 Fragment 期间被调用目前,它在 UI 线程上托管 Fragment 的onCreateView()

因此,我正在考虑将此调用放入某个线程/AsyncTask 中以在后台执行 init 。

文档没有提到这样做是否安全,也许这里的开发人员知道答案吗?:)

Mac*_*ski 5

最好的事情MapsInitializer是你可以完全忘记它。

从您链接到的文档中:

如果您正在使用 MapFragment 或 MapView,并且已经通过在这两个类中的任何一个上调用 getMap() 获得了一个(非空)GoogleMap,则无需调用此函数。

如果您在获取非空值时遇到问题,GoogleMap则不能通过 解决MapsInitializer,而是更新设备上的 Google Play 服务。

  • 看起来文档是错误的。我尝试在 onCreateView() 中调用 getMap() ,它返回非空对象,但是当我尝试调用 *CameraUpdateFactory.newLatLngZoom(...)* 时,它会抛出一个 NPE“*CameraUpdateFactory 未初始化*”。这就是为什么我明确地放置该方法,它修复了此崩溃。 (4认同)