小编mar*_*siv的帖子

如何停止GMSMapView渲染器?

在将GMSMapView用作视图层次结构的一部分时,我注意到了性能问题。重要说明:该地图不会占据整个屏幕,它用作表格视图标题。这些问题会影响表视图本身的行为-低FPS,这会导致不良的用户体验,因此,我试图解决这些问题或至少了解GMSMapView的操作。

使用Time Profiler,我发现这是由于在每帧上重新渲染GMSMapView所引起的(据我所知),因为主线程上最重的堆栈跟踪是:

在此处输入图片说明

从哪个调用: CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION

(我想这就是Google Maps内部的工作方式-它向运行循环注册一个CADisplayLink并在每帧上重新渲染它)

这导致大量的CPU使用率(高达99%):

在此处输入图片说明

请注意,在所选区域上,应用程序实际上什么都没有发生,它仅显示静态地图和表格视图(无用户交互,无框架变化,无任何变化)

如果我在没有GMSMapView作为子视图的情况下进行了相同的测试,则同一位置的CPU使用率几乎为0%:

在此处输入图片说明

现在到问题。为什么会发生这种情况,以及如何停止这种行为?

我找到了一个- (void) stopRendering在GMSMapView上调用的方法,并对其进行了测试-结果很好,并且性能与完全删除地图视图时相同。但是,此方法被标记为已弃用,并且声明将在将来的SDK版本中将其删除,这使其成为长期解决方案的不佳选择。

任何帮助,解释或线索将不胜感激!

google-maps ios google-maps-sdk-ios

8
推荐指数
1
解决办法
406
查看次数

标签 统计

google-maps ×1

google-maps-sdk-ios ×1

ios ×1