在Android中更新UI

时间:2015-07-24 05:25:20

标签: android android-fragments achartengine

我想从后台线程更新UI,如果用户想要在更新时与UI交互,那么UI不应该被后台线程阻止。

请帮帮我。

3 个答案:

答案 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);
                    }
                });