J'affiche une image assez importante dans une vision Web afin que les fonctions de zoom arrière et d'autres commodités de visualisation soient déjà disponibles.
Il s'affiche correctement la première fois. Mais après avoir quitté l'activité et y retourner, l'application se bloque sur une sortie supérieure liée au thread webview. P>
J'ai essayé plusieurs choses pour essayer de fermer la vision webview ou d'arrêter le fil ou d'effacer son utilisation. de mémoire, mais en vain. Voici des exemples de code que j'ai ajouté à mes activités ' Onstop () Code> Fonction P>
wv.stopLoading();
wv.clearCache(true);
//removeView(wv);
wv.clearView();
wv.freeMemory();
wv.destroy();
try {
Class.forName("android.webkit.WebView").getMethod("onPause", (Class[]) null).invoke(wv, (Object[]) null);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
3 Réponses :
Peut-être essayer de recycler le bitmap / image? p>
Si cela ne fonctionne pas, je vous suggère de la réémarrer. P>
Strange hors de mémoire lors du chargement d'une image sur un objet bitmap p>
Je tire mon image vers le bas comme une chaîne cryptée. Aucune fonction bitmap n'est appelée. Le WebView utilise la fonction LoadData avec le mimeType approprié.
ReadwritechaRarraRaybuffer n'alloue pas assez de mémoire sur la seconde partie. (L'image est disponible en tant que chaîne) Comment allouer ... 1024000 de mémoire
Vous ne pouvez pas attribuer la mémoire sur le périphérique Android. Je me souviens de la session de Googleoo dans laquelle Romain Guy était comme "Tu ne sais jamais combien de mémoire votre application va tellement utiliser aussi peu que possible tout le temps". Cela dit, il pourrait s'agir d'une longue chaîne avec un énorme processus de décryptage? Essayez de finaliser () code> quelques trucs là-bas peut-être? Ou appelez un système.gc () juste avant de charger votre webview?
D'accord, la conclusion à ce sujet était que le tampon à cordes ne pouvait pas être prédéterminé ou correctement effacé à ces tailles de ces fichiers. P>
Dans ce cas, l'image a été tirée d'un serveur sous forme de chaîne, manipulée en tant que chaîne et enfin affiché comme une image. p>
Si affiché comme une vue d'écran ou comme webview, cela n'a pas d'importance, l'application s'écraserait une fois qu'un tampon à chaîne est devenu plein (ce qui ne ferait pas clairement que peu importe la quantité de choses que j'ai libérée ou réglée à NULL), c'était un effort de cryptage. p>
mais finalement simplement installé avec stocker les images dans le dossier d'actifs de l'application. P>
@Pablo J'utilise UrlimageViewHelper sur Github, j'ai également contribué à ce projet
espère que cela vous aidera. p> h3>
Lorsque vous quittez l'appel d'activité
webview.destroy () code>. Vous pouvez le faire en détruisant le webview dans le
OnDestroy () code> de votre activité
N'a pas fonctionné.
vide protégé ondestroy () {super.ondestroy (); wv.destroy (); } CODE> TOUJOURS GOT OUTOFMORYError lorsque j'ai chargé l'activité une seconde fois.
hmmm .. Essayez de supprimer le code de votre
Onstop () Code> Méthode. et essayez de détruire votre
Webview code> avant d'appeler
super.ondetroy () code>
Cela n'a aucune influence non plus :(
+1 Ce code de nettoyage était très utile