Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Problemas de memoria con imagenes
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
neon2004  
View profile  
 More options Oct 30 2012, 11:50 am
From: neon2004 <diego.cam...@bbvaglobalnet.com>
Date: Tue, 30 Oct 2012 08:50:36 -0700 (PDT)
Local: Tues, Oct 30 2012 11:50 am
Subject: Problemas de memoria con imagenes

Hola.

Tengo una imagen que creo a partir de una url almacenada en una bd. Con
este bitmap que creo lo paso a base64 para guardar el string en las
preferencias y poder recoger esta preferencia en otra activity donde quiero
mostrar la imagen. El problema es que me peta ya que me da problemas de
memoria.
¿Cómo puedo solucionarlo?

El código que uso es el siguiente:

Activity Principal: (Convierto el bitmap y lo guardo en las preferencias)

URL url = new URL(urlAvatarl);
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());

 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 bmp.compress(Bitmap.CompressFormat.JPEG, 20, baos);  
byte[] b = baos.toByteArray();

encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

SharedPreferences prefs =
getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE);
editor.putString(TAG_URLAVATAR, encodedImage);
editor.commit();

**** HASTA AQUI TODO CORRECTO *****

Activity Secundaria: (Recoge de las preferencias el bitmap almacenado como
base64, lo paso a bitmap y lo muestro)

 SharedPreferences prefs =  
getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE);

urlAvatar = prefs.getString(TAG_URLAVATAR, "");

 if( !urlAvatar.equalsIgnoreCase("") ){
     byte[] b = Base64.decode(urlAvatar, Base64.DEFAULT);
     bmp = BitmapFactory.decodeByteArray(b, 0, b.length);  
////////////***************************************************************  
EN ESTE PUNTO ES DONDE PETA **************////
      btnPerfil.setImageBitmap(bmp);

}

La traza que me da es esta:

10-30 16:22:14.859: E/dalvikvm-heap(21347): Out of memory on a
31961104-byte allocation.
10-30 16:22:14.859: I/dalvikvm(21347): "AsyncTask #2" prio=5 tid=14 RUNNABLE
10-30 16:22:14.859: I/dalvikvm(21347):   | group="main" sCount=0 dsCount=0
obj=0x4310b650 self=0x5d2125d8
10-30 16:22:14.859: I/dalvikvm(21347):   | sysTid=22837 nice=10 sched=0/0
cgrp=apps/bg_non_interactive handle=1563176096
10-30 16:22:14.859: I/dalvikvm(21347):   | schedstat=( 133824784 45184177
199 ) utm=9 stm=3 core=0
10-30 16:22:14.859: I/dalvikvm(21347):   at
android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
10-30 16:22:14.864: I/dalvikvm(21347):   at
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:650)
10-30 16:22:14.864: I/dalvikvm(21347):   at
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:722)
10-30 16:22:14.869: I/dalvikvm(21347):   at
com.famovie.Login$ComprobarInternet$Logearse.doInBackground(Login.java:287)
10-30 16:22:14.869: I/dalvikvm(21347):   at
com.famovie.Login$ComprobarInternet$Logearse.doInBackground(Login.java:1)
10-30 16:22:14.879: I/dalvikvm(21347):   at
android.os.AsyncTask$2.call(AsyncTask.java:287)
10-30 16:22:14.969: I/dalvikvm(21347):   at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-30 16:22:14.969: I/dalvikvm(21347):   at
java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-30 16:22:14.969: I/dalvikvm(21347):   at
android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-30 16:22:14.974: I/dalvikvm(21347):   at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1 076)
10-30 16:22:14.974: I/dalvikvm(21347):   at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java: 569)
10-30 16:22:14.974: I/dalvikvm(21347):   at
java.lang.Thread.run(Thread.java:856)
10-30 16:22:14.974: D/AbsListView(21347):
[unregisterDoubleTapMotionListener]
10-30 16:22:14.974: D/skia(21347): --- decoder->decode returned false
10-30 16:22:14.979: I/MotionRecognitionManager(21347):  
.unregisterListener : / listener count = 0->0,
listener=android.widget.AbsListView$4@42c92868
10-30 16:22:14.989: W/dalvikvm(21347): threadid=14: thread exiting with
uncaught exception (group=0x41fc92a0)
10-30 16:22:14.999: E/AndroidRuntime(21347): FATAL EXCEPTION: AsyncTask #2
10-30 16:22:14.999: E/AndroidRuntime(21347): java.lang.RuntimeException: An
error occured while executing doInBackground()
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
android.os.AsyncTask$3.done(AsyncTask.java:299)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
java.util.concurrent.FutureTask.setException(FutureTask.java:124)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1 076)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java: 569)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
java.lang.Thread.run(Thread.java:856)
10-30 16:22:14.999: E/AndroidRuntime(21347): Caused by:
java.lang.OutOfMemoryError
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:650)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:722)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
com.famovie.Login$ComprobarInternet$Logearse.doInBackground(Login.java:287)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
com.famovie.Login$ComprobarInternet$Logearse.doInBackground(Login.java:1)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
android.os.AsyncTask$2.call(AsyncTask.java:287)
10-30 16:22:14.999: E/AndroidRuntime(21347):     at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-30 16:22:14.999: E/AndroidRuntime(21347):     ... 5 more
10-30 16:22:25.724: E/WindowManager(21347): Activity com.famovie.Login has
leaked window
com.android.internal.policy.impl.PhoneWindow$DecorView@42faaab0 that was
originally added here
10-30 16:22:25.724: E/WindowManager(21347): android.view.WindowLeaked:
Activity com.famovie.Login has leaked window
com.android.internal.policy.impl.PhoneWindow$DecorView@42faaab0 that was
originally added here
10-30 16:22:25.724: E/WindowManager(21347):     at
android.view.ViewRootImpl.<init>(ViewRootImpl.java:402)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:311)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl. java:149)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.view.Window$LocalWindowManager.addView(Window.java:558)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.app.Dialog.show(Dialog.java:277)
10-30 16:22:25.724: E/WindowManager(21347):     at
com.famovie.Login$ComprobarInternet$Logearse.onPreExecute(Login.java:255)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.os.AsyncTask.execute(AsyncTask.java:534)
10-30 16:22:25.724: E/WindowManager(21347):     at
com.famovie.Login$ComprobarInternet.onPostExecute(Login.java:229)
10-30 16:22:25.724: E/WindowManager(21347):     at
com.famovie.Login$ComprobarInternet.onPostExecute(Login.java:1)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.os.AsyncTask.finish(AsyncTask.java:631)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.os.AsyncTask.access$600(AsyncTask.java:177)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.os.Handler.dispatchMessage(Handler.java:99)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.os.Looper.loop(Looper.java:137)
10-30 16:22:25.724: E/WindowManager(21347):     at
android.app.ActivityThread.main(ActivityThread.java:4898)
10-30 16:22:25.724: E/WindowManager(21347):     at
java.lang.reflect.Method.invokeNative(Native Method)
10-30 16:22:25.724: E/WindowManager(21347):     at
java.lang.reflect.Method.invoke(Method.java:511)
10-30 16:22:25.724: E/WindowManager(21347):     at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 1006)
10-30 16:22:25.724: E/WindowManager(21347):     at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
10-30 16:22:25.724: E/WindowManager(21347):     at
dalvik.system.NativeStart.main(Native Method)

Esta imagen es subida por un usuario al hacer el registro.

La primera ve que se logea me peta tal como indico, pero el proceso de
logueado se ha realizado, aunque no ha mostrado la siguiente activity, y lo
almaceno para que la siguiente vez que entre, si se ha logeado
anteriormente no tenga que volver  hacerlo. Pues esta segunda vez que ya
esta almacenada el bitmap en las preferencias y no conecta con el
webservice para recoger los datos, si que me carga bien la activity con la
imagen.

Este mismo problema de memoria me ocurre a veces cuando el usuario hace el
registro.

En este momento le doy la opción de elegir una foto de la galería y hay
veces que me peta mostrando este error de OutOfMemoryError. El caso es que
me pasa con imagenes que unas veces selecciona y peta y otras las
seleccionas y muestro en un ImageButton sin problema alguno.

Por último tengo una duda con respecto a las imágenes y es que algunas de
ellas, hasta ahora solo me ocurre con una ya que tampoco he probado con
muchas imágenes diferentes,
resulta que me sale girada y no entiendo porque.

Espero que podáis ayudarme.

Gracias


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.