我有一个应用程序,进行了大量的折线重绘(每秒约4次重绘)。 绘制折线的代码:
plo = new PolylineOptions().geodesic(true)
.color(Color.WHITE)
.width(4f)
.zIndex(0);
plo.add(lineVector.position);
plo.add(SphericalUtil.computeOffset(lineVector.position, 1000,lineVector.bearing));
PredictionLine = mMap.addPolyline(plo);
在使用以下内容绘制新的Polyline之前,将从地图中删除最后一条Polyline:
PredictionLine.remove();
这很有效,但只有一段时间。过了一会儿,我收到了消息:
我可以点击“确定”,应用程序可以正常工作,但也只能在有限的时间内完成。然后突然整个应用程序崩溃了。查看日志将返回以下内容:
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] JNI ERROR (app bug): global reference table overflow (max=51200)
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] global reference table dump:
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] Last 10 entries (of 51200):
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] 51199: 0x356051e0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] 51198: 0x356051a0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] 51197: 0x35605160 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] 51196: 0x35605120 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] 51195: 0x356050e0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] 51194: 0x353c38a0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] 51193: 0x353c31e0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] 51192: 0x353c1120 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838 12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] 51191: 0x353b7de0 com.google.android.gms.clearcut.a.h
只要删除上面提到的代码行,应用程序就可以正常运行而没有任何其他问题。 想法,如果谷歌地图遇到问题,在折线上进行重绘?
答案 0 :(得分:1)
您不应删除并添加新的折线,只需更改其参数即可! 您可以更改折线的点,宽度,颜色等,只需保留对它的引用!
setColor(int color)
setGeodesic(boolean geodesic)
setPoints(列表点)
setVisible(boolean visible)
setWidth(float width)
setZIndex(float zIndex)
https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polyline
表演会更轻松,更好!
答案 1 :(得分:0)
您需要删除对类和对象的全局引用。