Mémoire insuffisante sur une allocation d'octets (Bitmap as String to webservice utilisant soap)
Vais avoir un bitmap
, donc je veux télécharger un webserivceas chaîne et souhaitez retrive la chaîne.
Pour la conversion de bitmap à chaîne am à l'aide de:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
strBase64 = Base64.encodeToString(byteArray, Base64.URL_SAFE);
au-dessus de cette String
est à l'aide de la propriété dans soapobject à télécharger.
Mais je suis arriver Out of memory on a 11674900-byte allocation
tandis que l'impression et le téléchargement.
Et si j'ai réglé le problème, sans l'impression d'suis
com.sun.jdi.InvocationException occurred invoking method.
sur soaprequest.
Comment résoudre ce problème et pour upload image
de webservice en tant que chaîne de caractères ?
source d'informationauteur Udaykiran
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la création de 3 exemplaires d'un 11MO image(
bitmap
stream
strBase64
). Afin de réduire l'utilisation de la mémoire par l'appel deen dessous de cette ligne:
Également fermer le flux de données lorsque vous avez fini avec elle(ci-dessous
stream.toByteArray();
):Rappeler qu'il n'existe aucune garantie que la mémoire sera nettoyée immédiatement après ces appels. Bonne façon de gérer ce type de situation est de transférer de gros fichiers de morceau par morceau.
De 11 Millions d'allocation d'octets beaucoup plus grande que la plupart des téléphones' tas peut gérer. vous ne voulez certainement pas à la tenue d'un tableau d'octets de taille en mémoire.
Essayez d'utiliser insample taille avec
BitmapFactory.decodeStream(InputStream est, Rect outPadding, BitmapFactory.Options opte)
des options et des paramètres à utiliser insample de la taille pour retourner une taille raisonnable de l'image.
Une solution simple pour certains peut-être à ajouter android:configChanges="orientation|screenSize" à votre manifeste. Dans mon cas, le Nexus_S émulateur a été s'écraser sans cette ligne, tandis que la Nexus 7 de périphérique j'ai été le tester sur n'était pas de s'écraser sur la rotation.
L'ajout de ce qui semble être une solution facile pour les applications qui ont un couple de grands "match_parent" bitmaps pour faire pivoter et redimensionner.
Prudent si vous êtes en bâtiment pour les Api avant le 13!