14

有人可以解释为什么 Handlers 发布一个可运行文件吗?覆盖 handleMessage 和发送消息是否做同样的事情?

我编写了一些未经测试的代码来展示我认为这两种方式将如何实现。如果我的方法有误,请纠正我。

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);
4

1 回答 1

11

两个代码片段的工作方式相同,通常当您想在UI 线程上执行一些代码时使用Handler.postRunnable而无需了解有关Handler对象的任何信息。在许多需要在UI 线程上执行任意代码的情况下,这很有意义。

但在某些情况下,您希望组织发送到UI 线程的内容并具有您想要执行的特定功能,您可以使用sendMessage

我认为使用任何一个都不会影响性能。由你决定,使用你认为更适合你的任何东西。

于 2013-06-16T11:28:48.813 回答