Autore Topic: OutOfMemory in MapActivity  (Letto 567 volte)

Offline avsoft

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    Windows 8
OutOfMemory in MapActivity
« il: 26 Febbraio 2013, 00:12:24 CET »
0
Ciao ragazzi,
ho un problema che da tempo mi sta facendo impazzire ma non riesco a trovare una soluzione in nessun modo.
Ho una Activity con una MapView. Apparentemente funziona bene, ma se utilizzo la mappa per un po di tempo, spostandomi ed effettuando svariati zoom, dopo un po l'applicazione va in eccezione di OutOfMemory.

Io ho due smartphone sul quale effettuo i test, un Galaxy S2 e un Galaxy S3.
Non riesco a spiegarmi il motivo per cui sul S2 funziona tutto alla perfezione, la memoria viene gestita correttamente.
Sul S3 invece la memoria cresce sempre a dismisura e non viene mai svuotata fino ad arrivare inevitabilmente ad OutOfMemory.

Se qualcuno può darmi una mano gli sarei estremamente grato, anche solo qualche suggerimento, io non so piu cosa provare!

Codice: [Seleziona]
02-26 00:02:38.265: E/AndroidRuntime(24496): FATAL EXCEPTION: main
02-26 00:02:38.265: E/AndroidRuntime(24496): java.lang.OutOfMemoryError
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.graphics.Bitmap.nativeCreate(Native Method)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.graphics.Bitmap.createBitmap(Bitmap.java:640)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.google.android.maps.ZoomHelper.createSnapshot(ZoomHelper.java:465)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.google.android.maps.ZoomHelper.beginZoom(ZoomHelper.java:200)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.google.android.maps.MapView$2.onScaleBegin(MapView.java:382)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ScaleGestureDetector.onTouchEvent(ScaleGestureDetector.java:288)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.google.android.maps.MapView.onTouchEvent(MapView.java:684)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.customviews.MapView.onTouchEvent(CustomMapView.java:131)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.View.dispatchTouchEvent(View.java:7337)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2410)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2145)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2115)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1468)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.app.Activity.dispatchTouchEvent(Activity.java:2487)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2063)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2115)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1468)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.app.Activity.dispatchTouchEvent(Activity.java:2487)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.common.PrimaryPage.dispatchTouchEvent(PrimaryPage.java:174)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2063)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.View.dispatchPointerEvent(View.java:7520)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3376)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3308)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4402)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4380)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4484)
02-26 00:02:38.265: E/AndroidRuntime(24496):         at


Post unito: 27 Febbraio 2013, 22:01:27 CET
Nessuno sa darmi una mano? A qualcuno di voi è capitato questo problema?
« Ultima modifica: 27 Febbraio 2013, 22:01:27 CET da avsoft, Reason: Merged DoublePost »

Offline avsoft

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    Windows 8
Re:OutOfMemory in MapActivity
« Risposta #1 il: 08 Aprile 2013, 14:03:41 CEST »
0
Qualche idea?

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:OutOfMemory in MapActivity
« Risposta #2 il: 08 Aprile 2013, 14:20:11 CEST »
0
Potrebbe essere un bug della MapActivity.

Qui suggeriscono un workaround per evitare crash dell'app:

http://stackoverflow.com/a/8137360
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline avsoft

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    Windows 8
Re:OutOfMemory in MapActivity
« Risposta #3 il: 08 Aprile 2013, 21:47:54 CEST »
0
Grazie per la risposta.
Ho provato questa soluzione, purtroppo non risolve il problema. Utilizzando questo workaround l'app evita di andare in crash mentre è nella MapActivity ma comunque crasha non appena viene aperta una activity successiva poichè comunque la memoria era satura!

Anche io credo sia un gran bel bug, ma possibile non ci sia rimedio?!

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:OutOfMemory in MapActivity
« Risposta #4 il: 08 Aprile 2013, 22:21:12 CEST »
0
Potresti provare a chiamare il garbage collector, quando ti entra nell'eccezione.

Nel caso:

Codice: [Seleziona]
System.gc();
Un click sul pulsante "Thanks" è sempre gradito :-)