Handler.sendEmptyMessage(0)中的零意味着什么

时间:2013-03-11 12:48:12

标签: android

我正在学习Android,我对这句话感到困惑。 来自谷歌:

  

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

     

返回

     

如果邮件已成功放入邮件,则返回true   队列。失败时返回false,通常是因为looper处理   消息队列正在退出。

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

1 个答案:

答案 0 :(得分:15)

表示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对象,其中附加了更多数据

例如,发送带有一些成功文本的消息,你可以做到

Message.obtain(mHandler, 0, "Success text")

同样失败

现在根据零意味着,它只是发送一个空消息,0可以被任何值替换。在这种情况下,您只有一种类型的消息,而Handler确实理解这一点。因此,它不需要检查它收到的消息类型,只需要接收消息。所以sendEmptyMessage(AnyInteger)可以正常工作。 0只是按惯例