6

我正在学习 Android,但我一直坚持这个说法。来自谷歌:

发送仅包含 what 值的消息。

退货

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

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

4

1 回答 1

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 只是按照惯例

于 2013-03-11T12:54:17.487 回答