【Android】使用handler发送消息

来源:互联网 发布:seo与sem的联系 编辑:程序博客网 时间:2024/06/06 06:35



上面那个下载图片的例子是使用异步任务完成的,还可以使用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 {@Overridepublic void run() {// TODO Auto-generated method stubHttpClient 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 exceptione.printStackTrace();}}}

最后调用线程,同时得启动对话框

new Thread(new MyThread()).start();dialog.show();


原创粉丝点击