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();

}

}

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()