Handler发送消息

it2022-05-05  148

Handler发送消息小结

字数283 阅读210 评论0 obtainMessage()得到一个Message对象。

创建一个Message然后发送是这么写的:

Message msg = new Message(); msg.arg1 = 1; msg.arg2 = 2; msg.what = 3; msg.obj = Object; handler.sendMessage(msg);

性能优化后这样写:

Message msg = handler.obtainMessage(); msg.arg1 = 1; msg.arg2 = 2; msg.what = 3; msg.obj = Object; handler.sendMessage(msg);

相当于:

Message msg = handler.obtainMessage(int what,int arg1, int arg2, Object obj ) handler.sendMessage(msg);

再简练一点(这段代码在创建的Message中只传入两个参数,并让handler延迟10ms发送消息):

handler.sendMessageDelayed(handler.obtainMessage(int what,Object obj), 10);

至于接受消息,肯定是在handleMessage(Message msg)中:

Handler handler = new Handler(){ public void handleMessage(Message msg) { super.handleMessage(msg); //接收Message发送的消息 msg.what msg.arg1 msg.arg2 msg.obj //这里msg.obj需要强转成你传过来的数据类型 } };

给个实例看一看:

public boolean onTouch(View view, MotionEvent event){ if(event.getAction() == MotionEvent.ACTION_UP) { handler.sendMessageDelayed(handler.obtainMessage(TOUCH_EVENT_ID,view), 10); } return false; } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); //msg.obj强转成View类型(传过来的obj是一个View类型的参数) View scroller = (View)msg.obj; if(msg.what==TOUCH_EVENT_ID) { ...... } } };

转载于:https://www.cnblogs.com/wangying222/p/5372343.html

相关资源:各显卡算力对照表!

最新回复(0)