2011-03-22 132 views
5

在我的android應用程序中,我使用AsyncTask從互聯網下載圖像。異步任務android onPostExecute

我通過網址,我的AsyncTask做下載。但是,我如何將位圖返回到我的活動中。目前我將回調函數傳遞給我的asynctask構造函數,並在OnPostExecute中調用回調函數。這是做這件事的正確方法。

回答

7

doInBackground返回結果傳遞到onPostExecute這麼簡單的回報,從位圖的方法doInBackgroundonPostExecute處理。

1

回調函數可以正常工作,也可以傳入Activity或一個接口。要注意的關鍵是活動沒有改變或被破壞。

http://evancharlton.com/thoughts/rotating-async-tasks/在AsyncTasks上有一些很好的信息。

+1

代碼是有缺陷的,它不會重置'onDestroy'參考 – Matthias 2011-03-22 12:31:47

8

你可以做這樣的事情:

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