Próbuję zaimplementować mapę przy użyciu Androida Maps API v2 z biblioteką pomocy Androida, testowanie na Droid2 z systemem Android 2.2 Wszystko działa dobrze, ale tylko przez krótki okres czasu. Po dodaniu 10 znaczników i próbie przesunięcia mapy lub powiększenia/pomniejszenia co sekundę są zgłaszane błędy powodujące przerażający wyjątek i następuje awaria. Nic nie robię w tle. Jest dosłownie tylko mapa i 10 znaczników.Podstawowy interfejs API Android v2 MapActivity outOfMemory z 10 znacznikami
Dziękuję za porady.
Martin
Błędy:
01-07 03:03:23.221: DEBUG/dalvikvm(12914): GC_FOR_MALLOC freed 38714 objects/1797752 bytes in 74ms
01-07 03:03:23.378: ERROR/dalvikvm-heap(12914): 1048576-byte external allocation too large for this process.
01-07 03:03:23.378: ERROR/GraphicsJNI(12914): VM won't let us allocate 1048576 bytes
01-07 03:03:23.378: WARN/System.err(12914): OutOfMemory
01-07 03:03:23.432: DEBUG/dalvikvm(12914): GC_EXPLICIT freed 8793 objects/601896 bytes in 58ms
01-07 03:03:23.862: ERROR/dalvikvm-heap(12914): 1048576-byte external allocation too large for this process.
01-07 03:03:23.862: ERROR/GraphicsJNI(12914): VM won't let us allocate 1048576 bytes
01-07 03:03:23.870: WARN/System.err(12914): OutOfMemory
Wyjątek:
01-07 02:45:12.432: ERROR/dalvikvm-heap(12315): 1048576-byte external allocation too large for this process.
01-07 02:45:12.432: ERROR/GraphicsJNI(12315): VM won't let us allocate 1048576 bytes
01-07 02:45:12.464: WARN/dalvikvm(12315): threadid=17: thread exiting with uncaught exception (group=0x400208b0)
01-07 02:45:12.479: ERROR/AndroidRuntime(12315): FATAL EXCEPTION: GLThread 18
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:498)
at maps.r.h.a(Unknown Source)
at maps.cp.a.a(Unknown Source)
at maps.cp.a.a(Unknown Source)
at maps.cp.a.b(Unknown Source)
at maps.m.n.a(Unknown Source)
at maps.m.at.a(Unknown Source)
at maps.a.bq.a(Unknown Source)
at maps.a.w.a(Unknown Source)
at maps.a.w.a(Unknown Source)
at maps.a.w.a(Unknown Source)
at maps.a.ba.m(Unknown Source)
at maps.a.ba.run(Unknown Source)
Układ:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
class="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraTargetLat="49.85"
map:cameraTargetLng="15.42"
map:mapType="normal"
map:uiCompass="true"
map:uiRotateGestures="true"
map:uiScrollGestures="true"
map:uiTiltGestures="true"
map:uiZoomControls="false"
map:uiZoomGestures="true"
/>
Markery:
for (int i = 0; i < 9; i++) {
mMap.addMarker(new MarkerOptions()
.position(new LatLng(49d, 16d))
.draggable(true)
.title("BUUUUU")
.snippet("TEST"));
}
Może to być spowodowane tym, że dodajesz 10 znaczników tylko na jednej pozycji. Po prostu spróbuj dodać znacznik na różnych pozycjach. – GrIsHu
to tylko przypadek testowy, zachowuje się tak samo, gdy znaczniki znajdują się w różnych miejscach (byłby to banalny błąd google jeśli nie) – martenson
Używam tego samego problemu na tym urządzeniu. Oczywiście mogę narysować 50 znaczników, ale po 10 nieczystości mapy umiera. Obserwowałem stertę i nigdy nie korzystałem z całej sterty. Nadal miałem 5 MB, ale zmarł, gdy poprosił o taką samą kwotę jak Twoja aplikacja. Czy czytam ten 1048576-bajt źle? :( – Steven