我的AsyncTask阻止了阻止按鈕元素,同時下載圖像和進度對話框顯示延遲 - 它顯示一段時間之後圖像顯示,但下載需要很長時間,並且按鈕被阻止(橙色),對話框不顯示。AsyncTask阻止UI線程並顯示延遲進度條
public Bitmap download(String url, ProgressBar progressbar) throws InterruptedException, ExecutionException {
BitmapDownloaderTask task = new BitmapDownloaderTask(progressbar);
task.execute(url);
return task.get();
}
class BitmapDownloaderTask extends AsyncTask<String, Void, Bitmap> {
public BitmapDownloaderTask(ProgressBar progressbar) {
}
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(ShowActivity.this);
dialog.setMessage("Loading");
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.show();
}
@Override
protected Bitmap doInBackground(String... Params) {
return imageLoader.getBitmap(params[0]);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
dialog.dismiss();
}
}
在按鈕監聽器,只需調用下載功能,進度參數是因爲我在imageview的進度條圈 - 對話框僅用於測試,以發現爲什麼會出現延遲和塊。在另一個應用程序中,我使用可運行的線程和元素不被阻塞,但在教程中提到AsyncTask作爲更好的解決方案。
這是做正確的方式,檢查此鏈接:http://www.android-ios-tutorials.com/ 182/show-progressbar-while-download-image-using-asynctask-in-android/ – Houcine 2014-09-16 17:25:16