2010-10-25 14 views
0

J'essaie actuellement de créer une galerie d'images chargées à partir d'Internet. J'utilise un objet Gallery standard, avec un adaptateur personnalisé et un ImageView personnalisé. Tout fonctionne très bien, attendez-vous pour le téléchargement des images. J'utilise une tâche asynchrone pour faire cela (j'ai des miniatures qui s'affichent pendant le chargement).Android - Problèmes de chargement d'image dynamique

Cela fonctionne très bien pour charger les miniatures, mais pas vraiment pour les "grandes" images (environ 50k chacune).

J'utilise ceci pour les images chargement:

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); 
    } 

}

Le problème est, tout à fait au hasard, mais environ 8 fois sur 10, je suis arrivé le message suivant dans mon journal « 10-25 14: 58: 18.764: DEBUG/skia (11294): --- décodeur-> décodage renvoyé faux ", puis mon drawable est nul.

Je dirais qu'il y a un problème avec mon code, mais pourquoi ça marche parfois? ou pas?

J'ai essayé de mettre WebViews dans ma galerie, en chargeant seulement l'URL de l'image, et cela fonctionne très bien et incroyablement vite pour télécharger les images, mais alors l'affichage est assez foiré (lent et pas réactif, et les images ne sont pas centré sur l'écran ...).

Que dois-je faire?

Je ne comprends pas pourquoi parfois mon flux d'entrées ne fonctionne pas. Seulement parfois. Si on l'essaie assez fort (comme avec une boucle), cela fonctionne toujours après quelques tentatives, mais c'est vraiment une solution laide.

Existe-t-il un moyen de télécharger les images avec webviews et les obtenir après? J'ai essayé quelque chose comme ça (avec getCache() ou capturePicture() de la webview) mais il n'affichait rien ...

Des pensées? Des idées?

Merci beaucoup! Eh bien ... ça fonctionne à chaque fois que je réalise une copie de l'inputStream ... mais pourquoi?

Répondre