线程切换
通过消息发送(发布)和接收(订阅)的方式切换的。
1 .Handler
子线程(非UI线程)调用handler对象sendMessage(msg)方法,将消息发送给关联Looper,Looper将消息存储在MessageQueue消息队列里面。
然后轮巡取出MessageQueue中的消息给UI线程中handler处理,handler得到消息调用handleMessage方法处理消息,从而可以更新Ui。
private Handler handler2=new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
//UI线程
textView.setText(msg.obj.toString());
}
}
};
//开启线程执行耗时操作
new Thread(){
@Override
public void run() {
//执行相关耗时操作等等...
//休眠3s
sleep(3000);
Message message = new Message();
//区分标志
message.what=1;
//传参到ui线程
message.obj=123123;
handler2.sendMessage(message);
}
}.start();
复