Iba a poner una palabra que empieza por p en el título, pero he pensado que era bastante probable que me cerrarían el hilo, creo que mierda no es una palabra ofensiva y menos aún con lo que voy a explicar.
Bueno, resulta que estoy desarrollando una aplicación que tiene que hacer 4 fotos (o cargarlas desde la galería) y luego subirlas a un servidor. Después puedes volver a hacer otras 4 fotos (o cargarlas) y subirlas.
La hago con el emulador y todo perfecto, la pruebo con el O3D, cargo una imagen de la galería y perfecto, cargo una foto con la aplicación de cámara (lo tengo desarrollado así, que me ofrezca las aplicaciones de cámara que tengo y luego se la traiga de allí) y perfecto, cargo otras 2 más de la galería y envío. Todo perfecto.
Lo vuelvo a hacer una vez más y cargando la primera foto da el famoso "OutofMemoryError VM Budget" que todo el mundo que haya programado en Android conocerá, después de mucho optimizar no consigo resolverlo.
La pruebo en el Galaxy S, perfecto, hasta 15 veces seguidas (60 fotos en total) del tirón sin cerrar la aplicación. Vuelvo al O3D y esta vez cargando la 2ª foto de la segunda tirada (la que sería la 6ª foto). Lo pruebo en una tablet Huaweii que tengo por aquí, con decir que su pantalla es resistiva y que trae Eclair creo que está todo dicho. Perfecto, 6 veces seguidas y ya lo dejo, aún podía haber seguido más (en el O3D casca a mitad de la 2ª así que está claro que el O3D va aún peor y no necesito seguir probando), en total 24 fotos.
En vista de lo cual opto por poner SoftReferences por todas partes donde sea posible, aunque esto siempre hay que hacerlo en última instancia, ahora bien, he hecho 4 seguidas y parece que va bien, aunque luego probaré a ver si llego a las 15 del Galaxy S. Pero aparece un problema nuevo, y es que la aplicación de cámara cuando la memoria está muy cargada no es capaz de exportar fotos a otra aplicación (la de Galería si va perfecta), en el Galaxy y en la Huaweii este problema no pasa, puedo estar por la foto 20 y traerme una foto de la cámara perfectamente.
Pienso, a lo mejor es que lo he programado mal, sin matar el proceso me voy al WhatsApp y le digo a enviar una foto desde la cámara. Force Close del WhatsApp, y ya con esto pienso "Olé, olé y olé, por lo menos el mio no casca, se queda como si no hubiese pasado nada"
Conclusión: Que el O3D gestiona la RAM como el culo, incluso con SoftReferences, que un Galaxy S1 y una tablet Huaweii sin las SoftReferences. Además de que presenta problemas de exportación con la librería de la cámara cuando la memoria está muy cargada. Debido seguro también a su mala gestión de RAM.
Así que ala, problema de la RAM demostrado de forma empírica, no tienes que irte a multitareas ni nada, funcionando con una sola aplicación es de los peores móviles (o tablets) del mercado gestionando RAM.
Siento el rollazo, pero es que tenía que soltarlo, he perdido muchas horas optimizando por culpa del O3D. A partir de ahora depuraré con el Galaxy.