Android:为什么Handlers发布了runnable?

时间:2013-06-16 11:22:42

标签: android android-handler

有人能解释为什么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);

1 个答案:

答案 0 :(得分:11)

两个代码段的工作方式相同,通常情况下,当您想要在 UI线程上执行某些代码时,您可以使用 Handler.postRunnable ,而无需了解有关处理程序对象。在许多需要在 UI线程上执行任意代码的情况下,这是有道理的。

但在某些情况下,您希望整理发送到 UI主题的内容,并希望以这种方式执行特定功能,您可以使用 sendMessage

我不认为使用任何一个在另一个之上会有性能损失。你可以使用你认为更适合你的任何东西。