我遇到了runOnUiThread和Handlers,但对我来说,它们在哪些事实上完全不同似乎仍然存在疑问。
更新 UI 的最佳方式是什么?我应该使用runOnUiThreadorHandler吗?
已经通过链接。仍然无法证明差异是合理的。
先感谢您
我遇到了runOnUiThread和Handlers,但对我来说,它们在哪些事实上完全不同似乎仍然存在疑问。
更新 UI 的最佳方式是什么?我应该使用runOnUiThreadorHandler吗?
已经通过链接。仍然无法证明差异是合理的。
先感谢您
runOnUiThread 是一种使用主 ui 处理程序的方法,因此它们基本上是相同的。唯一的区别是,如果您在 ui 处理程序中调用它,您只需运行它而不是发布它。
public final void runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
}
处理程序是实现事件队列的好方法。它不必在主线程上运行,您可以设置自己的looper。RunOnUiThread 基本上是一种快捷方式,因此您实际上没有启动处理程序等。
处理程序在其中声明它的地方注册自己。或者您也可以手动设置弯针。
如果您想将多次数据发布到主线程,则处理程序特别有用。
runOnUiThread 是 Activity 的方法。所以当你需要更新 UI Thread 时,你必须按如下方式编写代码。
runOnUiThread(new Runnable() {
@Override
public void run() {
// update the ui
}
});
所以没有可重用性。
例如,您要更新文件下载的状态。您应该多次编写上述方法。
但是使用 Handler 对象会使用同一个 Handler 对象多次更新 UI。