我偶然遇到runOnUiThread
和Handlers
,但对我而言,它们似乎仍然存在疑问,因为它们确切地区别于哪些事实。
更新用户界面的最佳方法是什么?我应该使用runOnUiThread
还是Handler
?
已经过link。仍然无法证明这种差异。
先谢谢你
答案 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。