为什么会这样?
while (flag) {
outCPU.setText(getCpuInfo());
}
getCpuInfo返回字符串,如果我尝试编写此方法并返回日志,那么应该是一切,但textview没有任何反应..
答案 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);