Android:为什么 Handlers 发布一个可运行的?

标签 android android-handler

有人可以解释为什么 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/

相关文章:

android - 将 gridview 项目可检查状态传播给 child

android - 使用服务在应用程序生命周期之外继续计时器

java - 来自非 Activity 类的处理程序

android - 在appium中查找 ListView 中的所有元素

android - 如何为改造 2 制作单例?

android - 如何通过单击删除android studio中不必要的所有类型的文件

android - 如何从 gridView 中单击的图像中获取资源名称?

java - 如何在主 UI 线程的不同线程中执行处理程序

android - 更新 viewPager 时发生 ANR

android - 将处理程序变量从MainActivity类传递到android kotlin中的后台线程类的最佳方法是什么?