1、what用来区分哪个消息,obj来传送内容
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 数字:
String s = (String) msg.obj;
break;
}
};
};
Message msg = new Message();
msg.obj = "";//obj也可以是其他类型
msg.what = 数字;
handler.sendMessage(msg);
2、在子线程中直接改变UI
runOnUiThread(new Runnable() {
@Override
public void run() {
//TODO主线程
}
});
3、延迟发送消息
mHandler.sendEmptyMessageDelayed(0, 2000);//(what,2秒)
4、取消发送
mHandler.removeCallbacksAndMessages(null);
//移除消息
handler.removeCallBacks(runnable);
5、延迟时间操作
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//TODO
}
}, 1000);
6、复用msg
//先从消息池中去获取旧的msg对象,如果没有再创建新的对象
Message message = handler.obtainMessage();
//...arg1,arg2,what,obj相关赋值
message.sendToTarget();
//另一种写法
handler.obtainMessage(what, obj).sendToTarget();