Handler与runOnUiThread有什么区别?

时间:2016-09-07 10:20:22

标签: android android-asynctask android-handler android-runonuithread

我偶然遇到runOnUiThreadHandlers,但对我而言,它们似乎仍然存在疑问,因为它们确切地区别于哪些事实。

更新用户界面的最佳方法是什么?我应该使用runOnUiThread还是Handler

已经过link。仍然无法证明这种差异。

先谢谢你

3 个答案:

答案 0 :(得分:3)

runOnUiThread是一个使用主ui处理程序的方法,所以基本上它们是相同的。唯一的区别是,如果你在ui处理程序中调用它,你只需运行它而不是发布它。

public final void runOnUiThread(Runnable action) {
   if (Thread.currentThread() != mUiThread) {
      mHandler.post(action);
   } else {
      action.run();
   }
}

答案 1 :(得分:1)

处理程序是实现事件队列的好方法。它不必在主线程上运行,您可以设置自己的looper。 RunOnUiThread基本上是一个快捷方式,所以你实际上没有启动处理程序等等。

答案 2 :(得分:1)

处理程序注册它自己的声明。或者你也可以手动设置弯针。

如果您想要将多次数据发布到主线程,则处理程序特别有用。

runOnUiThread是Activity的方法。因此,当您需要更新UI线程时,您必须按以下方式编写代码。

       runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    // update the ui

                }
            });

因此没有可重用性。

例如,您要更新文件下载的状态。你应该多次写上面的方法。

但是使用Handler对象使用相同的处理程序对象多次更新UI。