我遇到runOnUiThread
和Handlers
,但对我而言,它似乎仍然是一个疑问,因为它们究竟与哪些事实完全不同。Handler vs runOnUiThread有什么区别?
什么是更新UI的最佳方式?我应该使用runOnUiThread
还是Handler
?
已经通过link。仍然无法证明差异。
先谢谢您
我遇到runOnUiThread
和Handlers
,但对我而言,它似乎仍然是一个疑问,因为它们究竟与哪些事实完全不同。Handler vs runOnUiThread有什么区别?
什么是更新UI的最佳方式?我应该使用runOnUiThread
还是Handler
?
已经通过link。仍然无法证明差异。
先谢谢您
runOnUiThread是一种使用主要UI处理程序的方法,因此基本上它们是相同的。唯一的区别是,如果你在UI处理程序中调用它,你只需运行它而不是发布它。
public final void runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
}
处理程序是实现事件队列的好方法。它不必在主线程上运行,您可以设置自己的活套。 RunOnUiThread基本上是一个快捷方式,所以你实际上不需要启动一个处理程序等等。
Handler注册自己,声明它。或者您也可以手动设置弯针。
如果您想要将多次数据发布到主线程,则处理程序特别有用。
runOnUiThread是Activity的方法。所以当您需要更新UI线程时,您必须按照以下方式编写代码。
runOnUiThread(new Runnable() {
@Override
public void run() {
// update the ui
}
});
所以没有可重用性。
例如,您要更新文件下载的状态。你应该多次写上述方法。
但是使用Handler对象多次使用相同的Handler对象更新UI。
我知道这另一个然后,如果你知道请回答。 –
你是什么意思“除此之外”?如果您需要使用处理程序,则需要为每个处理程序分配一个内存,并且您需要控制是否已在UI处理程序中工作。该方法本身为你做。 –