Descargar imágenes en segundo plano mientras muestra la vista de lista

Tengo una matriz de todos los URI de las imágenes que estoy mostrando en una lista. Ahora quiero ejecutar un hilo en el fondo que obtiene estas imágenes de la web y almacenarlos en la tarjeta SD. Por lo tanto, cuando haga clic en un elemento en particular en la lista en lugar de buscar de la web que debe buscar de la tarjeta SD en la nueva actividad.

¿Cómo hago esto?

Usted podría intentar usar mi marco perezoso-drawables (licencia GPL v3):

https://github.com/rtyley/lazy-drawables

-afortunadamente no está todavía preparada para la producción, pero entre las cosas que intenta manejar:

  • Fondo (no-UI-hilo) carga de recursos de imagen
  • Almacenamiento en caché eficiente de mapas de bits escalados – para el caso de uso en el que está descargando una sola imagen grande y quiere mostrarla cientos de veces en un formato de icono más pequeño en una lista o algo así
  • Transparencia de uso, por lo que quiero decir …

… una vez que haya configurado una sesión perezosa y flexible, rellenar una vista de imagen es tan fácil como:

Drawable avatarDrawable = imageSession.get(someUserIdentifier); // doesn't block imageView.setImageDrawable(avatarDrawable); 

No importa que pueda haberle devuelto inmediatamente un bitmapdrawable normal, o posiblemente generó una tarea asíncrona y devolvió un marcador de posición dibujable – el drawable se actualizará y es el host ImageView cuando la tarea asíncrona ha terminado.

Esa es la teoría de todos modos. Parece sorta-un poco de trabajo hasta ahora, pero a veces esa actualización espontánea de la interfaz de usuario no sucede … no sé por qué: -}

Compruebe WebImageView por matthias käppler.

Puede reemplazar su forma de almacenar imágenes en caché con la función SDcard que desea.

Utilice la descarga AsyncTask en segundo plano mientras muestra su interfaz de usuario

  File imageFile; 

Guardar imágenes de la web

 public View getView(int position, View convertView, ViewGroup parent) { imageFile = new File("/sdcard/jorgesysTemp/" + Arraypicname(position); if(!imageFile.exists()){ AsyncTaskProcess() //Download your images to sdcard } 

Cuando haces clic en tu listview cargas la imagen de sdcard

  @Override protected void onListItemClick(ListView l, View v, final int position, long id) { //load from sdcard Bitmap bitmapImg = BitmapFactory.decodeFile("/sdcard/jorgesysTemp/" + Arraypicname(position)); BitmapDrawable drawableImg = new BitmapDrawable(bitmapImg ); myimageview.setImageDrawable(drawableImg ); ... ... ... 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.