¿Alguien puede decirme el motivo del error de transacción fallida de la carpeta ? Puedo ver este mensaje de error en logcat. Recibo este error al intentar poner un mapa de bits de forma dinámica en un widget ...
116
Esto se debe a que todos los cambios en los RemoteViews se serializan (por ejemplo, setInt y setImageViewBitmap). Los mapas de bits también se serializan en un paquete interno. Desafortunadamente, este paquete tiene un límite de tamaño muy pequeño.
Puede resolverlo reduciendo el tamaño de la imagen de esta manera:
public static Bitmap scaleDownBitmap(Bitmap photo, int newHeight, Context context) {
final float densityMultiplier = context.getResources().getDisplayMetrics().density;
int h= (int) (newHeight*densityMultiplier);
int w= (int) (h * photo.getWidth()/((double) photo.getHeight()));
photo=Bitmap.createScaledBitmap(photo, w, h, true);
return photo;
}
Elija newHeight para que sea lo suficientemente pequeño (~ 100 por cada cuadrado que debería tomar en la pantalla) y utilícelo para su widget, y su problema se resolverá :)
Puede comprimir el mapa de bits como una matriz de bytes y luego descomprimirlo en otra actividad, como esta.
¡¡Comprimir!!
Descomprimir !!
fuente
El búfer de transacciones de Binder tiene un tamaño fijo limitado, actualmente 1 Mb, que es compartido por todas las transacciones en curso para el proceso. En consecuencia, esta excepción se puede lanzar cuando hay muchas transacciones en curso, incluso cuando la mayoría de las transacciones individuales son de tamaño moderado.
referir este enlace
fuente
Vea mi respuesta en este hilo.
intent.putExtra("Some string",very_large_obj_for_binder_buffer);
Está excediendo el búfer de transacciones de la carpeta al transferir elementos grandes de una actividad a otra.
fuente
Resolví este problema almacenando imágenes en el almacenamiento interno y luego usando .setImageURI () en lugar de .setBitmap ().
fuente
El enfoque correcto es usar
setImageViewUri()
(más lento) osetImageViewBitmap()
y recrearRemoteView
los mensajes de correo electrónico cada vez que actualice la notificación.fuente