Czy ktoś może mi powiedzieć, dlaczego wystąpił błąd nieudana transakcja wiążąca? Widzę ten komunikat o błędzie w logcat. Otrzymuję ten błąd podczas próby dynamicznego wstawiania mapy bitowej w widgecie ...Nieudana transakcja wiążąca podczas dynamicznego wstawiania mapy bitowej w widgecie
Odpowiedz
Jest to spowodowane tym, że wszystkie zmiany w widokach RemoteView są serializowane (np. SetInt i setImageViewBitmap). Bitmapy są również serializowane do wewnętrznego pakietu. Niestety ten pakiet ma bardzo mały rozmiar.
Można go rozwiązać poprzez skalowanie w dół rozmiar obrazu w ten sposób:
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;
}
Wybierz newHeight być na tyle małe (~ 100 za każdy kwadrat powinien wziąć na ekranie) i używać go do widgetu a twój problem zostanie rozwiązany :)
Bufor transakcji Binder ma ograniczony stały rozmiar, obecnie 1Mb, który jest wspólny dla wszystkich transakcji w toku dla procesu. W związku z tym wyjątek ten może zostać zgłoszony w przypadku wielu transakcji w toku, nawet jeśli większość pojedynczych transakcji ma umiarkowany rozmiar.
odnoszą ten link
Mam rozwiązać ten problem przez przechowywania zdjęć w pamięci wewnętrznej, a następnie za pomocą .setImageURI() zamiast .setBitmap().
i nie przesyłaj obrazów przez Parcelable z ekranu na ekran, tak czy inaczej, to chyba najgorsze w tym przypadku. – MartinC
Można skompresować bitmapę jako tablicę bajtów, a następnie rozpakować ją w innej czynności, na przykład.
Kompresuj !!
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
setresult.putExtra("BMP",bytes);
Rozpakuj !!
byte[] bytes = data.getByteArrayExtra("BMP");
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
Doskonały, to znacznie zmniejsza rozmiar bitmapy. – Navin
dlaczego nie używać JPEG zamiast PNG? czy nie jest lepiej skompresowany? – mehmet6parmak
@ mehmet6parmak PNG jest używany, ponieważ jest bezstratny, w przeciwieństwie do JPEG. Tak, JPEG kompresuje się lepiej, ale jakość (nieco) cierpi w rezultacie. – Petzku
Właściwym podejściem jest użycie setImageViewUri()
(wolniej) lub setImageViewBitmap()
i ponowne RemoteView
s za każdym razem dokonać aktualizacji zgłoszenia.
- 1. outofmemoryerror podczas tworzenia mapy bitowej
- 2. Zmiana rozmiaru mapy bitowej
- 3. Unieważnij do własnej mapy bitowej
- 4. rysunek do większej mapy bitowej
- 5. pusty ekran po ponownym uruchomieniu programu uruchamiającego (nieudana transakcja zgrywania)
- 6. Konwersja mapy bitowej na jpeg w Androidzie
- 7. Android: ładowanie mapy bitowej maski alfa
- 8. Obracanie mapy bitowej o 90 stopni
- 9. Kanał: próbuję użyć przetworzonej mapy bitowej Android
- 10. Konwertowanie mapy bitowej na byteArray android
- 11. Android: tworzenie mapy bitowej z zawartością SurfaceView
- 12. Jak utworzyć wypukłość wokół mapy bitowej?
- 13. Odręczny obraz Przyciągnij obszar wewnątrz mapy bitowej
- 14. Rysowanie obróconej mapy bitowej z anty aliasem
- 15. Zablokuj tabelę podczas wstawiania
- 16. Czasami skalowanie w dół mapy bitowej generuje większy plik. Czemu?
- 17. SQLiteException "nie można zatwierdzić - żadna transakcja nie jest aktywna" podczas wstawiania z CONFLICT_REPLACE
- 18. jQuery w widgecie
- 19. tkinter w widgecie
- 20. Wyjaśnienie metody getPixels dla mapy bitowej w systemie Android:
- 21. Jaka jest najlepsza metoda do dynamicznego wstawiania skryptów JavaScript?
- 22. Czy należy zmienić rozmiar mapy bitowej przed dodaniem do ImageView lub pozwolić obrazowi zmienić rozmiar mapy bitowej?
- 23. Dynamiczna inteligentna maska daty podczas wstawiania daty
- 24. Jak używać onAppWidgetOptionsChanged() w widgecie?
- 25. Dyskretny suwak w widgecie matplotlib
- 26. Zduplikowane elementy w widgecie GridView
- 27. OpenGl renderuje bezpośrednio do mapy bitowej (bez żadnego widoku)
- 28. Rozmiar mapy bitowej zwracanej przez kamerę za pomocą intencji?
- 29. Zmiana odcienia mapy bitowej przy zachowaniu całkowitej jasności
- 30. Czy możliwe jest BitBlt bezpośrednio z mapy bitowej GDI +?
Nie bardzo rozumiem, co się tutaj dzieje. Używam ViewPagera z dość dużym zbiorem danych, ale pamięta on wszystko między stronami mimo spamu związanego z segregatorem. Czy pakiet jest zapisywany w pamięci lokalnej, a następnie zapisywany wstępnie lub co? Czy mogę utracić dane, jeśli dodaję więcej stron? –
Świetna pomoc. bardzo ci dziękuję !!!! – Jigar
Ale to zredukuje jakość obrazu –