我遇到了runOnUiThread
和Handlers
,但对我来说,它们在哪些事实上完全不同似乎仍然存在疑问。
更新 UI 的最佳方式是什么?我应该使用runOnUiThread
orHandler
吗?
已经通过链接。仍然无法证明差异是合理的。
先感谢您
我遇到了runOnUiThread
和Handlers
,但对我来说,它们在哪些事实上完全不同似乎仍然存在疑问。
更新 UI 的最佳方式是什么?我应该使用runOnUiThread
orHandler
吗?
已经通过链接。仍然无法证明差异是合理的。
先感谢您
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。