有人能解释为什么Handlers发布了一个可运行的?重写handleMessage和发送消息是否也做同样的事情?
我写了一些未经测试的代码来说明我认为这两种方式是如何实现的。如果我的方法错了,请纠正我。
Handler with Post:
handler.post(new Runnable() {
@Override
public void run() {
imageView.doSomething();
}
});
带handleMessage的处理程序:
final Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
imageView.doSomething();
}
};
handler.sendMessage(message);
答案 0 :(得分:11)
两个代码段的工作方式相同,通常情况下,当您想要在 UI线程上执行某些代码时,您可以使用 Handler.postRunnable ,而无需了解有关处理程序对象。在许多需要在 UI线程上执行任意代码的情况下,这是有道理的。
但在某些情况下,您希望整理发送到 UI主题的内容,并希望以这种方式执行特定功能,您可以使用 sendMessage 。
我不认为使用任何一个在另一个之上会有性能损失。你可以使用你认为更适合你的任何东西。