子线程不能直接刷新主线程的UI界面,故而使用消息队列机制。
子线程:使用handler对象发送消息到主线程的消息队列message queue;
主线程:轮询器Looper检测到消息队列中的消息;
Handler:handler对象调用handlermessage()方法。
发送消息:
Message msg = handler.obtainMessage();
msg.what=1;
msg.obj=bp;
handler.sendMessage(msg);
消息处理:
android.os.Handler handler=new android.os.Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
ImageView iv= (ImageView) findViewById(R.id.iv);
iv.setImageBitmap((Bitmap) msg.obj);
break;
case 0:
Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_SHORT).show();
break;
}
}
};