我有一个 Android 应用程序,可以使用 Android Maps Extensions 将 1000 个标记添加到 Extended GoogleMap。但是我想使用
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
而标记被添加到地图需要 2 - 5 秒。我的问题是:
- 我必须在 UI 线程上添加 1000 个标记。
- 不确定的微调器也在 UI 线程上运行,因此在添加地图标记时它会“粘住”。
我如何在自己的线程中运行不确定的微调器,使其不受添加到扩展地图的 1000 个标记的影响?我使用的扩展地图设置如下:
final FragmentManager fm = getSupportFragmentManager();
final SupportMapFragment f = (SupportMapFragment) fm.findFragmentById(R.id.map);
mGoogleMap = f.getExtendedMap();
final ClusteringSettings settings = new ClusteringSettings();
settings.iconDataProvider(new TowerIconDataProvider(getResources()));
settings.addMarkersDynamically(true);
mGoogleMap.setClustering(settings);
更新
我发现了addMarker()
性能问题的根本原因;每个计时器我都在我的 GoogleMap 中添加了一个标记,我调用
它来自定义标记图标
一旦我修改了我的代码以在我的 addMarker 循环之外执行此操作,我就达到了所需的响应时间。
感谢 MaciejGórski 推动我真正审视自己的代码。
.icon(BitmapDescriptorFactory.fromResource(R.drawable.my_drawable))