Handler消息机制的写法
使用Handler的步骤:
1.主线程中创建一个Handler
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
};
};
2.重写handler的handlermessage方法
3.子线程中创建一个Message对象,将获取的数据绑定给msg
Message msg = new Message();
//另一种方式:Message msg = Messge.obtain;
msg.obj = result;
4.主线程中的handler对象在子线程中将message发送给主线程
handler.sendMessage(msg);
5.主线程中handlermessage方法接受子线程发来的数据,就可以做更新UI的操作。
主线程
//☆☆☆1.在主线程中创建一个Handler对象
private Handler handler = new Handler(){
//☆☆☆2.重写handler的handlermessage方法,用来接收子线程中发来的消息
public void handleMessage(android.os.Message msg) {
//☆☆☆5.接收子线程发送的数据,处理数据。
Bitmap bitmap = (Bitmap) msg.obj;
//☆☆☆6.当前方法属于主线程可以做UI的更新
//五.获取服务器返回的内容,显示到textview上
img_pic.setImageBitmap(bitmap);//设置ImageView的图片内容
};
};
子线程
if(code == 200){
//5.获取有效数据,并将获取的流数据解析成String
InputStream inputStream = connection.getInputStream();
//将一个读取流转换成一个图片 Drawable , Btimap:位图 ?????
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
//☆☆☆3.子线中创建一个Message对象,为了携带子线程中获取的数据给主线程。
Message msg = Message.obtain();//获取一个Message对象,内部实现是:如果之前的Message存在直接返回,不存在创建新的Message返回
msg.obj = bitmap;//将获取的数据封装到msg中。
//☆☆☆4.使用handler对象将message发送到主线程。
handler.sendMessage(msg);
}