有人可以解释为什么 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);
最佳答案
这两个代码 fragment 的工作方式相同,通常,当您想在 UI 线程 上执行一些代码时,您可以使用 Handler.postRunnable 而无需了解您的 >处理程序对象。在许多需要在 UI 线程 上执行任意代码的情况下,这很有意义。
但在某些情况下,您想要组织发送到 UI 线程 的内容,并希望以这种方式执行特定功能,您可以使用 sendMessage。
我不认为使用其中任何一个会导致性能下降。由您决定,使用您认为更适合您的任何东西。
关于Android:为什么 Handlers 发布一个可运行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132767/