-7

我遇到runOnUiThreadHandlers,但对我而言,它似乎仍然是一个疑问,因为它们究竟与哪些事实完全不同。Handler vs runOnUiThread有什么区别?

什么是更新UI的最佳方式?我应该使用runOnUiThread还是Handler

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

先谢谢您

回答

3

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

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

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

+0

我知道这另一个然后,如果你知道请回答。 –

+0

你是什么意思“除此之外”?如果您需要使用处理程序,则需要为每个处理程序分配一个内存,并且您需要控制是否已在UI处理程序中工作。该方法本身为你做。 –

1

Handler注册自己,声明它。或者您也可以手动设置弯针。

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

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

 runOnUiThread(new Runnable() { 

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

       } 
      }); 

所以没有可重用性。

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

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

相关问题