Handler:主要用于接收子线程发送的数据;是Runnable和Activity交互的桥梁;
在run()方法中发送Message,在Handler里,通过不同Message执行不同的任务
Lopper:一个线程只有一个Lopper,对应一个MessageQueue,但可以有多个Handler
(1)Lopper和Handler
【Activity1.java】
void onCreate(){
Lopper lopper=new Lopper(this);
button1.setOnClickListener(new OnClickListener(){
public void onClick(View v){
lopper.start();}
});
}
Handler handler=new Handler(){
public void handlerMessage(Message msg){
switch(msg){
case 0:
text1.setText("00000");
break;
case1:
text1.setText("111111");
break;
}
}
}
【Lopper.java】
Activity1 activity1;
boolean flage=true;
void lopper(Activity1 activity1){
this.activity1=activity1;
}
public void run(){
Lopper.prepared();
void (flage){
activity.sendEmptyMessage(0);
Lopper.lopper();
}
}
发现:没发现怎么方便,就相当于一个接口的作用吧,Lopper控制哪一个hanler执行哪一个action。
(2)Hanler和Message
【Thread1.java】
new Thread(new Runnable()){
public void run(){
Message message=new Message();
message.what=START_NOW;
myHandler.sendMessage(message);}
}
【Activity1.java】
Handler myHandler=new Handler(){
public void handleMessage(Message msg){
switch(msg){
case:START_NOW:
.........
break;
case:START_LATER:
.........
break;
}
}
}
程序中应用到的实例:
mHandler.obtainMessage(MainActivity.BLUETOOTH_STATE_CHANGE, state, -1)
.sendToTarget();
解释:
public final Message obtainMessage (int what, int arg1, int arg2)
Same as obtainMessage()
, except that it also sets the what, arg1 and arg2 members of the returned Message.
Parameters
what | Value to assign to the returned Message.what field. |
---|---|
arg1 | Value to assign to the returned Message.arg1 field. |
arg2 | Value to assign to the returned Message.arg2 field. |
Returns
- A Message from the global message pool