Android 当我们需要重写处理程序时';s handleMessage()方法

Android 当我们需要重写处理程序时';s handleMessage()方法,android,kotlin,Android,Kotlin,我正在学习Looper和Handler,大多数时候我读到它用于与UI线程通信。但是后来我看到了代码,它是Handler的子类,带有handleMessage(msg:Message)方法,然后我感到困惑,因为我们可以在不扩展Handler类的情况下与GUI线程交互。 以kotlin android为例 val handler = Handler(); handler.post({ // update GUI here }); 因此,我可以轻松地与GUI线程交互,而无需实现子类或handleM

我正在学习Looper和Handler,大多数时候我读到它用于与UI线程通信。但是后来我看到了代码,它是
Handler
的子类,带有
handleMessage(msg:Message)
方法,然后我感到困惑,因为我们可以在不扩展Handler类的情况下与GUI线程交互。 以kotlin android为例

val handler = Handler();
handler.post({ 
// update GUI here
});
因此,我可以轻松地与GUI线程交互,而无需实现子类或
handleMessage()

让我再解释一下我的问题。有时我会看到这个例子

class HandlerSub : Handler(){

    override fun handleMessage(msg : Message){
        // update GUI here.
    }
}
val handler = HandlerSub();
handler.send({ 
// send something..
});
因此,在上面的示例中,这两个代码都用于更新GUI线程/与GUI线程交互。但是第一个代码更简单,更容易与GUI交互的代码更少


那么,
handleMessage()
方法的真正目的是什么?我们应该在什么时候实现它?

当您希望message.obj成为某个自定义类时,使用sendMessage(…)调用,将其发送到可能的另一个线程进行处理。这通常是通过让message.what成为ID,并知道该特定ID的message.obj的对象类型,然后强制转换为该对象类型来实现的。这在整个Android框架中的许多地方都有使用,例如,检查每个状态类中的以及它们如何处理
processMessage(Message msg)
。这些状态中的每一个都由处理程序委派。

post只是委派给sendMessage()@Submersed的一个方便方法。我不是问
sendMessage()
post()之间的区别。
我是问当我们需要实现
handleMessage()
方法时。@Submersed我已经更新了我的问题,请重新阅读。当您选择什么对象时,请使用sendMessage。什么是某个自定义类,并且要根据消息id类型对其进行强制转换。@淹没您可以在答案中用一个示例进行解释吗?一个简单的代码示例将对我有所帮助。我被阅读理论束缚住了。。。对不起-_-您是否检查了processMessage(Message msg)在BluetoothStateMachine中是如何实现的?基本上,它的实现与自定义Handler.handleMessage(msg:Message)实现上的实现相同。在Kotlin中,您可能只需要使用when,因为它没有开关。很抱歉,没有handleMessage,这就是我无法比较processMessage的原因-_-handleMessage在Handler类中…processMessage在State类中。@未知,或者您将看到如何发送和处理
消息
s的真实示例-BluetoothStateMachine不是一个很好的示例