2011-03-22 15 views
5

En mi aplicación Android, utilizo AsyncTask para descargar la imagen de internet.Async task android onPostExecute

Paso la url y mi AsyncTask realiza la descarga. Pero, ¿cómo devuelvo el mapa de bits a mi actividad? Actualmente paso la función de devolución de llamada a mi constructor asynctask y en OnPostExecute invoco la función de devolución de llamada. ¿Es esta la forma correcta de hacerlo?

Respuesta

7

El resultado regrese de doInBackground se pasa a onPostExecute retorno tan simple el mapa de bits de doInBackground método y manejarlo en onPostExecute.

1

Una función de devolución de llamada funciona bien, también puede pasar la actividad en, o una interfaz. La clave a tener en cuenta es que la actividad no ha cambiado o ha sido destruida.

http://evancharlton.com/thoughts/rotating-async-tasks/ tiene buena información sobre AsyncTasks.

+1

que el código es defectuoso, no restablece la referencia en 'onDestroy' – Matthias

8

se puede hacer algo como esto:

public Bitmap btm; 
public void onClick(View v) { 
    new DownloadImageTask().execute("http://example.com/image.png"); 
} 

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    protected Bitmap doInBackground(String... urls) { 
     return loadImageFromNetwork(urls[0]); 
    } 

    protected void onPostExecute(Bitmap result) { 
     // set image for ImageView 
     mImageView.setImageBitmap(result); 
     // orsimply save it 
     btm = result; 
    } 
}