如果检查例如从here Message.java代码,你会看到
//Sends this Message to the Handler specified by getTarget().
public void sendToTarget() {
target.sendMessage(this);
}
换句话说,sendToTarget()
将使用预先指定的Handler
并调用它的sendMessage()
如果您要查找的obtain()
方法你会看到:
public static Message obtain() {
synchronized (sPoolSync) {
if (sPool != null) {
Message m = sPool;
sPool = m.next;
m.next = null;
m.flags = 0; // clear in-use flag
sPoolSize--;
return m;
}
}
return new Message();
}
提供的解释也很好:
从全局池中返回一个新的Message实例。允许我们避免 在很多情况下分配新对象。
做同样的obtain(Handler h)
:
public static Message obtain(Handler h) {
Message m = obtain();
m.target = h;
return m;
}
您可以确认obtain(Handler h)
真的与增加设定的目标Handler
同获得()的obtain()
,但在返回的消息上设置目标成员的值。
还有其他几个重载,只是检查Message.java并搜索 “获得”
obtain(Message orig)
obtain(Handler h, Runnable callback)
obtain(Handler h, int what)
obtain(Handler h, int what, Object obj)
obtain(Handler h, int what, int arg1, int arg2)
obtain(Handler h, int what, int arg1, int arg2, Object obj)
- ...
希望这有助于,干杯!
http://androidxref.com/7.0.0_r1/xref/frameworks/base/core/java/android/os/Message.java#415 – pskink
此外,您不能发送活动之间的消息 – Selvin
@pskink啊哈,所以'sendToTarget'真*是*,'sendMessage'。 'gets()'和'gets(Handler)'有什么关系? – LondonRob