我正在尝试在功能运行期间更改应用的屏幕。
public void StartRecording(View view)
{
start_button.setEnabled(false);
stop_button.setEnabled(true);
recording = true;
while(recording==true)
{
// Here is a code that changes many views on the screen
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
函数通过单击xml文件中的start_button来调用StartRecording()。
单击stop_button时,录制设置为false。
屏幕上的视图应该更改,等待一秒钟,再次更改,等待一秒钟,等等。 但是发生的是该函数等待循环结束,然后仅显示最终的屏幕更改。我做错了什么?
非常感谢:)
编辑:
我尝试使用Handler,结果相同..
private final Handler mHandler = new Handler(Looper.getMainLooper())
{
public void handleMessage(Message msg)
{
tv.setText((String) msg.obj);
}
};
tv是一个textView。我没有在上面代码中的try {}上方使用tv.setText,而是向mHandler发送了一条消息来更改文本,并且只有在整个startRecording函数结束后才会更改它。
现在,我做错了什么? :/
答案 0 :(得分:1)
我做错了什么
你正在调用sleep
等待UI线程,它负责绘制你的视图和处理事件。如果您想安排10次不同的视图重绘,可以使用Handler及其postDelayed方法