У меня есть приложение, которое отслеживает местоположение при перемещении, каждые 5 секунд я отправляю широковещательный приемник, чтобы нарисовать ломаную линию на карте Google, я использую метод ниже:
ArrayList<Location> locationList = Service.locationList;
if (locationList.size() == 2) {
Location fromLocation = locationList.get(0);
Location toLocation = locationList.get(1);
LatLng from = new LatLng(((fromLocation.getLatitude())),
((fromLocation.getLongitude())));
LatLng to = new LatLng(((toLocation.getLatitude())),
((toLocation.getLongitude())));
polyline = mMap.addPolyline(new PolylineOptions()
.add(from, to)
.width(10).color(Color.parseColor("#801B60FE")).geodesic(true));
} else if (locationList.size() > 2 && polyline.getPoints()!=null) {
Location toLocation = locationList.get(locationList.size() - 1);
LatLng to = new LatLng(((toLocation.getLatitude())),
((toLocation.getLongitude())));
points = polyline.getPoints();
points.add(to);
polyline.setPoints(points);
}
Через некоторое время это вызывает OOM:
Неустранимое исключение: java.lang.OutOfMemoryError Не удалось выделить 603979784 байта с 16777216 свободными байтами и 197 МБ до OOM
java.util.Arrays.copyOf (Arrays.java: 3352)
java.lang.AbstractStringBuilder.expandCapacity (AbstractStringBuilder.java:130) com.android.volley.NetworkDispatcher.run (NetworkDispatcher.java:87)
Может кто угоднодай мне решение ??