En évitant MANQUÉ de LIANT TRANSACTION erreur lors de la mise à jour des lots de widget bitmaps
Je suis venir à travers un message d'erreur quand je mets à jour mon RemoteViews dans mon AppWidget.
.. !!! MANQUÉ DE LIANT TRANSACTION !!!
Cela est dû au fait que toutes les modifications à la RemoteViews sont sérialisés (par exemple setInt et setImageViewBitmap ). Les images sont également sérialisé dans un intérieur bundle. Malheureusement, cette série a une très petite taille limite.
Je ne peux pas utiliser setImageResource que je suis l'espoir de permettre à l'utilisateur de télécharger des skins pour le widget.
Peut-on recommander une solution de contournement pour ce problème? Je suis déjà à l'aide d'un "nouveau" RemoteViews objet pour chaque instance du widget, mais une seule instance contient trop de mises à jour.
Merci!
OriginalL'auteur Ash McConnell | 2011-08-01
Vous devez vous connecter pour publier un commentaire.
La meilleure solution de contournement que j'ai trouvé est d'utiliser
setImageURI
sur leImageView
objets à l'aide deVoici la description complète de Les Développeurs Android de groupe
OriginalL'auteur Ash McConnell
Vous pouvez le résoudre par une réduction de la taille de l'image de cette façon:
Choisir newHeight à être assez petit (~100 pour chaque carré, il doit prendre sur l'écran) et l'utiliser pour votre widget, et votre problème sera résolu 🙂
OriginalL'auteur GalDude33
Le Liant de la transaction de la mémoire tampon a une limite de taille fixe, qui est actuellement de 1 mo, qui est partagée par l'ensemble des transactions en cours pour le processus. Par conséquent, cette exception peut être levée lorsqu'il y a de nombreuses opérations en cours, même lorsque la plupart des opérations de taille moyenne.
renvoyer cette lien
OriginalL'auteur dharam
J'ai essayé le fichier URI approche énumérés ci-dessus et d'autres endroits. Il a travaillé, mais avait deux inconvénients, d'abord il a fallu 500ms pour écrire le fichier qui a été perceptible dans mon application. Deuxièmement, l'ImageView à échelle réduite de l'image par la densité() (1.5 sur Nexus S).
La solution qui fonctionnait le mieux pour moi est de couper l'image et mis à jour chaque secteur séparément. La mise en page ressemble à
Puis dans le widget fournisseur de couper l'image bitmap en 4 tranches, et de mettre à jour chacun séparément (chacun avec son sur RemoteViews et sa propre appWidgetManager.updateAppWidget(...). Désolé pour le haut niveau de la description, mais j'espère que vous obtenez l'idée.
OriginalL'auteur user1139880