Buenas!
Estoy haciendo algunos tutoriales de Android, y concretamente estoy en uno que consiste en una lista de imágenes en horizontal, y un botón para ponerla de fondo de escritorio del móvil.
Por el momento la app arranca y cumple, pero para una vez. Veamos cómo sale esto (siguiendo las instrucciones del Boston tutorials esos de youtube):
El horizontalScrollView viene definido en el XML, tiene 5 imageViews cada uno con una imagen de 960x800. Si pongo un sexto imageView ya da FC por falta de memoria.
Entonces, cuando pulsas el botoncico, tengo escrito esto:
Código:
InputStream is = getResources().openRawResource(toPhone);
Bitmap background = BitmapFactory.decodeStream(is);
try{
getApplicationContext().setWallpaper(background);
}catch(IOException e){
e.printStackTrace();}
System.gc();
toPhone básicamente es el int que tiene la referencia a la imagen seleccionada, y el System.gc() es un inocente intento de liberar memoria, que tiene toda la pinta de estar ahí tranquilamente sacándose los mocos sin hacer nada. Esto funciona bien la primera vez. La segunda peta casi fijo, por pasarme de varas con la memoria.
De qué forma podría reducir recursos? O cómo hago para hacer una lista de imágenes en la que sólo estén cargadas las que se muestran en pantalla, y se liberen a continuación?
Mil gracias!