Réponses:
Cela est dû au fait que toutes les modifications apportées aux RemoteViews sont sérialisées (par exemple, setInt et setImageViewBitmap). Les bitmaps sont également sérialisés dans un bundle interne. Malheureusement, cet ensemble a une limite de taille très petite.
Vous pouvez le résoudre en réduisant la taille de l'image de cette façon:
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;
}
Choisissez newHeight pour être assez petit (~ 100 pour chaque carré qu'il devrait prendre à l'écran) et utilisez-le pour votre widget, et votre problème sera résolu :)
Vous pouvez compresser le bitmap en tant que tableau d'octets, puis le décompresser dans une autre activité, comme celle-ci.
Compresse!!
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
setresult.putExtra("BMP",bytes);
Décompressez !!
byte[] bytes = data.getByteArrayExtra("BMP");
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
Le tampon de transaction Binder a une taille fixe limitée, actuellement 1 Mo, qui est partagée par toutes les transactions en cours pour le processus. Par conséquent, cette exception peut être levée lorsque de nombreuses transactions sont en cours, même lorsque la plupart des transactions individuelles sont de taille moyenne.
renvoyer ce lien
Voir ma réponse dans ce fil.
intent.putExtra("Some string",very_large_obj_for_binder_buffer);
Vous dépassez le tampon de transactions du classeur en transférant des éléments volumineux d'une activité à une autre activité.
La bonne approche consiste à utiliser setImageViewUri()
(plus lentement) ou à setImageViewBitmap()
recréer RemoteView
s chaque fois que vous mettez à jour la notification.