2011-03-22 4 views
5

Dans mon application Android, j'utilise AsyncTask pour télécharger l'image depuis Internet.Tâche asynchrone android onPostExecute

Je passe l'URL et mon AsyncTask fait le téléchargement. Mais comment puis-je retourner le bitmap à mon activité. Actuellement, je passe la fonction de rappel à mon constructeur asynctask et dans la fonction OnPostExecute j'appelle la fonction de rappel. Est-ce la bonne façon de le faire.

Répondre

7

Le résultat que vous revenez de doInBackground est passé à onPostExecute retour si simple le bitmap à partir doInBackground méthode et de gérer dans onPostExecute.

1

Une fonction de rappel fonctionne correctement, vous pouvez également transmettre l'activité ou une interface. La chose clé à surveiller est que l'activité n'a pas changé ou a été détruit.

http://evancharlton.com/thoughts/rotating-async-tasks/ a de bonnes informations sur AsyncTasks.

+1

que le code est erroné, il ne remet pas la référence dans 'onDestroy' – Matthias

8

Vous pouvez faire quelque chose comme ceci:

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; 
    } 
} 
Questions connexes