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

Sma*_*oat 6 android

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

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

返回

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

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

Ahm*_*xan 15

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

你的handleMessage函数看起来像这样

public void handleMessage (Message msg)
Run Code Online (Sandbox Code Playgroud)

您传递了一个Message对象,您可以检查公共字段what以确定消息的内容.(msg.what)

例如.

你发送两种类型的消息,what有价值1 for success0 for failure

所以你的handleMessage函数看起来像这样

public void handleMessage (Message msg) {
    switch (msg.what) {
        case 1:
            //success handling
            break;

        case 0:
            //failure handling
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在你可以获得sendEmptyMessage(0)成功和sendEmptyMessage(1)失败.

请记住,您不必发送空消息,您也可以发送一个Message对象,其中附加了更多数据

例如,您可以发送包含成功文本的消息

Message.obtain(mHandler, 0, "Success text")
Run Code Online (Sandbox Code Playgroud)

而且类似的失败

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