0
我有一個ArrayList:GoogleMap.addGroundOverlay()需要花費大量的時間UiThread
ArrayList<GroundOverlayOptions> goArray;
- 約2-3k的元素。 當我嘗試這樣顯示的:
for (GroundOverlayOptions temp : goArray) {
map.addGroundOverlay(temp);
}
需要花費大量的時間UiThread(約10-15s),它創造ANR錯誤。 map.addGroudOverlay()必須在UiThread上運行。 有沒有解決這個問題的方法? goArray的
內容:
float longitude, float latitude, float width,float height, int color
{
final Bitmap bitmap = Bitmap
.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
bitmap.setPixel(0, 0, color);
final BitmapDescriptor image = BitmapDescriptorFactory
.fromBitmap(bitmap);
final LatLngBounds bounds = new LatLngBounds(new LatLng(latitude
- height/2, longitude - width/2), new LatLng(latitude
+ height/2, longitude + width/2));
long startTime = System.currentTimeMillis();
GroundOverlayOptions go = new GroundOverlayOptions().image(image)
.positionFromBounds(bounds).transparency(0.33f);
goArray.add(go);
}
不工作 - '致:java.lang.IllegalStateException:不就在com.google.lace.b(來源不明) 在com.google.maps.api.android主線程 。 lib6.d.ct.a(Unknown Source) at com.google.maps.api.android.lib6.d.ft.a(Unknown Source)' – msc3
我正在閱讀的一件事是關於_TileOverlay_和_GroundOverlay_,它看起來像喜歡_TileOverlay_更適合這樣做。 您是否考慮過使用_TileOverlay_而不是_GroundOverlay_?我可以看到您正在使用循環語句爲goArray分配一些值,然後在一個接一個地加載。可能你有多個循環,考慮使用另一個線程來處理所有的循環。也許這就是你拖延的起點。您可以發佈完整的代碼(與問題有關)和完整的堆棧跟蹤。 –