2013-03-11 59 views
6

我正在学习Android,并且我被困在这个声明中。 谷歌:Handler.sendEmptyMessage中的零意味着什么(0)

发送只包含什么值的消息。

返回

,则返回true,如果消息被成功地放置在该消息 队列。失败时返回false,通常是因为活动处理器 消息队列正在退出。

有人请为我解释包含零的消息会做什么。谢谢

+0

这就像是doc说的,message.what – njzk2 2013-03-11 12:48:55

回答

14

这意味着what值。 what基本上是一个整数,允许接收者识别它接收到的消息。

你的handleMessage函数看起来像这样

public void handleMessage (Message msg) 

你传递一个Message对象,你可以检查公共领域what找出消息是关于什么的。 (msg.what

例如,

您发送两种类型的消息,与what1 for success0 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只是按照惯例

+0

他们应该把你的解释放在他们的文档中,真的很有帮助!但是为什么当它实际上是一个'oneIntMessage'时,他们称之为'emptyMessage'? – winklerrr 2017-09-13 20:25:46