Java 用于显示文本的睡眠计时器
在安卓系统中,我试图一次显示一个就绪集Go,在覆盖下一个之前有一点延迟。Java 用于显示文本的睡眠计时器,java,android,Java,Android,在安卓系统中,我试图一次显示一个就绪集Go,在覆盖下一个之前有一点延迟。 这对我不管用。我得到暂停,但没有文字被写入。 这是我迄今为止所做的一切,非常感谢您的帮助 一旦用户单击按钮on-click调用readySetGo @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button_start_pause:
这对我不管用。我得到暂停,但没有文字被写入。 这是我迄今为止所做的一切,非常感谢您的帮助 一旦用户单击
按钮
on-click调用readySetGo
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button_start_pause:
readySetGo();
break;
default:
break;
}
}
public void readySetGo() {
text_timer.setText("Ready");
SystemClock.sleep(2000);
text_timer.setText("Set");
SystemClock.sleep(2000);
text_timer.setText("Go!!");
}
除非它在另一个线程中,否则在该方法返回之前,UI不会被更新
请参见我能够使用凯文·克鲁姆维德提供的帮助获得以下答案
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button_start_pause:
ready();
set();
go();
break;
default:
break;
}
}
public void ready() {
text_timer.setText("Ready");
}
public void set() {
final Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
text_timer.setText(" Set ");
}
};
handler.postDelayed(r, 1000);
}
public void go() {
final Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
text_timer.setText(" Go!!! ");
}
};
handler.postDelayed(r, 2000);
}
我猜这是安卓。是什么调用了这个代码?你是在一个单独的线程中运行这个吗?如果是这样,线程可能无法更新UI,除非您使用该功能进行设置。基本上,一个用户点击一个开始按钮,然后我希望文本说准备好了。。。。设置去吧……在安卓系统中使用计时器几乎没有什么好的理由。一个简单而正确的方法就是创建一个处理程序并使用它的postDelayed方法?我对安卓系统编程相当陌生。谷歌“安卓处理器”。但基本上,您只需在UI线程中创建一个线程,例如,在活动的onCreate(…)中。当您将可运行项发布到处理程序时,它们将在创建处理程序的线程中运行。