setText在while循环中不起作用

时间:2015-05-08 16:29:53

标签: java android settext

为什么会这样?

while (flag) {
outCPU.setText(getCpuInfo());
}

getCpuInfo返回字符串,如果我尝试编写此方法并返回日志,那么应该是一切,但textview没有任何反应..

2 个答案:

答案 0 :(得分:3)

它不起作用...显示将在您的功能完成后更新。 试试这个

boolean flag;
private void updateTextView(){
     outCPU.setText(getCpuInfo());
     if(flag){
         outCPU.post(new Runnable(){
             public void run(){
                 updateTextView();
             }
         });
     }
}

private void your_function(){
    if(flag){
         outCPU.post(new Runnable(){
             public void run(){
                 updateTextView();
             }
         });
     }

}

答案 1 :(得分:2)

ui线程上的无限循环可能不是一个好主意。 setText调度绘制操作,在ui线程队列上发布。不幸的是,同一个线程正在忙着循环。您可以使用TextView的内部处理程序在ui线程的队列中发布Runnable。例如。

private Runnable mRunnable = new Runnable() {
    @Override
    public void run() {
        if (!flag) {
            outCPU.removeCallbacks(this);
            return;
        }
        outCPU.setText(getCpuInfo());
        outCPU.postDelayed(this, 200);
    }
};

代替你的while循环你只需

outCPU.post(mRunnable);