2012-02-28 31 views
7

Estoy implementando una aplicación que utiliza Google Maps. Durante la depuración encontré un error interesante que puedes reproducir fácilmente (espero). Si el resultado es el ejemplo Hola MapView de Google:¿Es esto un error MapView?

http://developer.android.com/guide/tutorials/views/hello-mapview.html

El error: Si desliza a cualquier dirección rápida (TRY dirección diagonal), por un período de tiempo, es probable que obtener el siguiente error:

02-28 15:59:45.138: D/dalvikvm(26484): GC_CONCURRENT freed 2K, 13% free 18870K/21639K,  paused 2ms+4ms 
02-28 15:59:45.911: D/dalvikvm(26484): GC_FOR_ALLOC freed 1603K, 20% free 17396K/21639K, paused 14ms 
02-28 15:59:45.911: I/dalvikvm-heap(26484): Grow heap (frag case) to 18.546MB for 1560976-byte allocation 
02-28 15:59:45.942: D/dalvikvm(26484): GC_CONCURRENT freed 1K, 13% free 18919K/21639K, paused 2ms+2ms 
02-28 15:59:54.271: D/dalvikvm(26484): GC_CONCURRENT freed 2794K, 19% free 17649K/21639K, paused 2ms+2ms 
02-28 15:59:58.497: D/dalvikvm(26484): GC_CONCURRENT freed 856K, 18% free 17880K/21639K, paused 5ms+3ms 
02-28 16:00:04.341: D/dalvikvm(26484): GC_CONCURRENT freed 1003K, 17% free 18063K/21639K, paused 4ms+4ms 
02-28 16:00:11.083: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072 
02-28 16:00:11.091: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072 
02-28 16:00:11.614: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072 
02-28 16:00:11.614: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072 
02-28 16:00:11.638: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072 
02-28 16:00:11.646: D/dalvikvm(26484): GC_CONCURRENT freed 1097K, 16% free 18222K/21639K, paused 2ms+6ms 
02-28 16:00:11.646: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072 
02-28 16:00:11.646: D/skia(26484): ------- imageref_ashmem create failed <(null)> 131072 

El mapa se bloquea. Alguna idea de como resolver esto?

+0

Probé este ejemplo en un teléfono inteligente Galaxy S2 y el Galaxy Nexus – user1238247

+0

Pero supongo que esto no es un problema real de su código . No hay error, solo hay mensajes de depuración e información. ¿Esto de alguna manera influye en su código y experiencia del usuario? – Yury

+1

El problema es que cuando deslizas los dedos sobre el mapa (rápido) el mapa falla. El mapa ya no se puede usar después del accidente. Cuando el mapa falla, aparece el siguiente mensaje "imageref_ashmem create failed" (como se puede ver arriba). Creo que hay algunos problemas de memoria. El código es el código de ejemplo del enlace que envié arriba. ¿Alguien puede reproducir este comportamiento? – user1238247

Respuesta

1

Creo que Google Maps se cuelga con OutOfMemoryError Lo atrapé varias veces en mi HTC Wildfire. Se puede reproducir fácilmente en dispositivos con memoria de pila pequeña. Cuando deslizas (redimensionas) rápido, excederás todo tu montón. Piensa que el recolector de basura en algunos casos no puede liberar la memoria tan rápido y te está quedando sin memoria.

+2

¿Cuál puede ser la solución además de usar largeHeap = "verdadero"? – tasomaniac

1

En muchos casos, el comportamiento de bloqueo intermitente con MapView puede resolverse asegurándose de haber especificado largeHeap en el elemento "aplicación" del manifiesto de la aplicación, especialmente en dispositivos de pantalla más grande (tabletas). Este atributo está disponible comenzando en API Nivel 11 (Android 3.0).

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.ge.android.app" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="12" /> 

    <application android:icon="@drawable/app" android:label="@string/app_name" 
       android:debuggable="true" 
       android:theme="@style/CustomTheme" 
       android:largeHeap="true"> 
    ... 
    </application> 
    ... 
</manifest> 

Ver también: Android Developer Guide - Android Manifest

Cuestiones relacionadas