Bonjour à tous!
Comme mon titre l'indique, j'ai un probleme de chargement d'images dynamique à partir d'internet.
J'essaye de faire une galerie d'images (jusque là tout va bien) récupérée sur Internet. Le chargement se fait par une tache asynchrone lors de l'affichage de la vue (des miniatures récupérées au préalable sont affichées en attendant).
J'utilise cette méthode pour le chargement :
Mon problème est le suivant : de manière aléatoire (mais environ 7 fois sur 10), pas toujours sur les memes images, j'ai dans mon log le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 private class DownloadImageTask extends AsyncTask<String,Void,Drawable>{ @Override protected Drawable doInBackground(String... arg0) { URL url; InputStream is; Drawable d=null; try { url = new URL(arg0[0]); is = (InputStream) url.getContent(); d = Drawable.createFromStream(is, "src"); return d; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } protected void onPostExecute(Drawable result) { setImage(result); } }et mon drawable égal à null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DEBUG/skia(11294): --- decoder->decode returned false
Je n'ai aucun problème à charger des thumbnails par la même méthode, j'ai donc pensé que le problème était fonction de la taille de l'image. Pourtant, si je met cette méthode en boucle (sale, mais pour tester), cela fini toujours par passer... J'ai essayé en mettant mes images sur un autre serveur, et j'ai le même problème. Les images font environ 50ko, ce qui n'est pas énorme. Peut-être un buffer de taille limitée pas toujours libéré? je ne sais pas...
Comme solution alternative, j'ai essayé d'initialiser ma Galery avec des webviews qui se contentaient de loader l'url de ma photo. Les photos se chargent toujours, sans exception, et avec un temps record. Le problème est que je n'ai pas controle sur la manière dont l'image est affichée, et le contrôle est beaucoup moins réactif. Je pensais également télécharger ces images via les webviews et les afficher dans mes imageviews, mais je n'arrive pas à les récuprer...
Si quelqu'un a une idée sur le pourquoi du problème, ou sur comment le régler? Quelle manière serait la plus efficace? et comment?
Merci à tous!
Partager