我正在学习Android,并且我被困在这个声明中。 谷歌:Handler.sendEmptyMessage中的零意味着什么(0)
发送只包含什么值的消息。
返回
,则返回true,如果消息被成功地放置在该消息 队列。失败时返回false,通常是因为活动处理器 消息队列正在退出。
有人请为我解释包含零的消息会做什么。谢谢
我正在学习Android,并且我被困在这个声明中。 谷歌:Handler.sendEmptyMessage中的零意味着什么(0)
发送只包含什么值的消息。
返回
,则返回true,如果消息被成功地放置在该消息 队列。失败时返回false,通常是因为活动处理器 消息队列正在退出。
有人请为我解释包含零的消息会做什么。谢谢
这意味着what
值。 what
基本上是一个整数,允许接收者识别它接收到的消息。
你的handleMessage函数看起来像这样
public void handleMessage (Message msg)
你传递一个Message
对象,你可以检查公共领域what
找出消息是关于什么的。 (msg.what
)
例如,
您发送两种类型的消息,与what
值1 for success
和0 for failure
让你的handleMessage函数会是这个样子
public void handleMessage (Message msg) {
switch (msg.what) {
case 1:
//success handling
break;
case 0:
//failure handling
break;
}
}
现在你可以有失败sendEmptyMessage(0)
成功和sendEmptyMessage(1)
。
记住,你没有发送一个空的消息,您可以发送消息物体连接到它更多的数据量太大
例如发送与成功的一些文本的消息,你可以做
Message.obtain(mHandler, 0, "Success text")
同样地,对于故障
现在按照什么零种手段,它只是发送一个空消息和0可以由任何值代替。这个想法就是在这种情况下,你只有一种类型的消息,处理程序也明白这一点。所以它不需要检查它收到什么样的消息,只需要接收消息。所以sendEmptyMessage(AnyInteger)
会正常工作。 0只是按照惯例
他们应该把你的解释放在他们的文档中,真的很有帮助!但是为什么当它实际上是一个'oneIntMessage'时,他们称之为'emptyMessage'? – winklerrr 2017-09-13 20:25:46
这就像是doc说的,message.what – njzk2 2013-03-11 12:48:55