我想从后台线程更新UI,如果用户想要在更新时与UI交互,那么UI不应该被后台线程阻止。
请帮帮我。
答案 0 :(得分:0)
可以使用处理程序从后台线程发布UI更新。您可以参考https://developer.android.com/training/multiple-threads/communicate-ui.html获取代码示例。
答案 1 :(得分:0)
使用此功能,您可以从backgorund线程更新UI runOnUiThread()
runOnUiThread(new Runnable() {
@Override
public void run() {
//ui update stuff
}
});
答案 2 :(得分:0)
您可以使用处理程序来实现此目的。
一个简单的例子: 创建一个类:
class Task implements Runnable {
@Override
public void run() {
for (int i = 0; i <= 20; i++) {
final int value = i;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
@Override
public void run() {
progressBar.setProgress(value);
}
});
}
}
}
然后从你想要更新UI的地方调用它:
new Thread(new Task()).start();
可以找到完整示例here。
或者您也可以采用不同的方法。使用runOnUiThread方法还可以实现预期的结果。
示例:强>
runOnUiThread(new Runnable() {
@Override
public void run() {
btn.setText("#" + i);
}
});