Adakah yang bisa memberi tahu saya alasan kesalahan transaksi pengikat gagal ? Saya dapat melihat pesan kesalahan ini di logcat. Saya mendapatkan kesalahan ini saat mencoba meletakkan bitmap secara dinamis di widget ...
116
Ini disebabkan karena semua perubahan pada RemoteView adalah serial (mis. SetInt dan setImageViewBitmap). Bitmap juga diserialkan menjadi bundel internal. Sayangnya bundel ini memiliki batasan ukuran yang sangat kecil.
Anda dapat mengatasinya dengan memperkecil ukuran gambar dengan cara ini:
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;
}
Pilih newHeight agar cukup kecil (~ 100 untuk setiap persegi yang seharusnya ada di layar) dan gunakan untuk widget Anda, dan masalah Anda akan terpecahkan :)
Anda dapat mengompresi bitmap sebagai larik byte dan kemudian mengekstraknya di aktivitas lain, seperti ini.
Kompres!!
Buka kompres !!
sumber
Buffer transaksi Binder memiliki ukuran tetap terbatas, saat ini 1Mb, yang digunakan bersama oleh semua transaksi yang sedang berlangsung untuk proses tersebut. Konsekuensinya, pengecualian ini dapat dilakukan ketika ada banyak transaksi yang sedang berlangsung bahkan ketika sebagian besar transaksi individual berukuran sedang.
lihat tautan ini
sumber
Lihat jawaban saya di utas ini .
intent.putExtra("Some string",very_large_obj_for_binder_buffer);
Anda melebihi buffer transaksi pengikat dengan mentransfer elemen besar dari satu aktivitas ke aktivitas lain.
sumber
Saya telah memecahkan masalah ini dengan menyimpan gambar di penyimpanan internal dan kemudian menggunakan .setImageURI () daripada .setBitmap ().
sumber
Pendekatan yang tepat adalah menggunakan
setImageViewUri()
(lebih lambat) atausetImageViewBitmap()
dan membuat ulangRemoteView
setiap kali Anda memperbarui notifikasi.sumber