上面那个下载图片的例子是使用异步任务完成的,还可以使用Handler来发送消息
首先在函数内部生成一个Handler对象,如下:
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
byte[] data = (byte[])msg.obj;
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
imageView.setImageBitmap(bitmap);
if (msg.what == IS_FINISH){
dialog.dismiss();
}
};
};
然后在Main内自定义一个线程:
public class MyThread implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(image_path);
HttpResponse httpResponse = null;
// InputStream inputStream = null;
try {
httpResponse = httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// inputStream = httpResponse.getEntity().getContent();
byte[] data = EntityUtils.toByteArray(httpResponse
.getEntity());
//为何不使用new来生成?
Message message = Message.obtain();
message.obj = data;
message.what = IS_FINISH;
handler.sendMessage(message);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
最后调用线程,同时得启动对话框
new Thread(new MyThread()).start();
dialog.show();