在AsyncTask中,可使用publishProgress()和onProgressUpdated()来向主线程报告当前的执行进度,线程间的调度是自动进行的。
http://my.eoe.cn/938986/archive/6682.html
亮点:
@Override
protected Bitmap doInBackground(String... params) {// 处理后台执行的任务,在后台线程执行
publishProgress(0);// 将会调用 onProgressUpdate(Integer... progress) 方法
HttpClient hc = new DefaultHttpClient();
publishProgress(30);
HttpGet hg = new HttpGet(params[0]);// 获取 csdn 的 logo
final Bitmap bm;
try {
HttpResponse hr = hc.execute(hg);
bm = BitmapFactory.decodeStream(hr.getEntity().getContent());
} catch (Exception e) {
return null;
}
publishProgress(100);
//mImageView.setImageBitmap(result); 不能在后台线程操作 ui
return bm;
}
protected void onProgressUpdate(Integer... progress) {// 在调用 publishProgress 之后被调用,在 ui 线程执行
mProgressBar.setProgress(progress[0]);// 更新进度条的进度
}
protected void onPostExecute(Bitmap result) {// 后台任务执行完之后被调用,在 ui 线程执行
if(result != null) {
Toast.makeText(AsyncTaskActivity.this, " 成功获取图片 ", Toast.LENGTH_LONG).show();
mImageView.setImageBitmap(result);
}else {
Toast.makeText(AsyncTaskActivity.this, " 获取图片失败 ", Toast.LENGTH_LONG).show();
}
}
留言列表