Java 用于显示文本的睡眠计时器

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:

在安卓系统中,我试图一次显示一个就绪集Go,在覆盖下一个之前有一点延迟。
这对我不管用。我得到暂停,但没有文字被写入。 这是我迄今为止所做的一切,非常感谢您的帮助

一旦用户单击
按钮
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(…)中。当您将可运行项发布到处理程序时,它们将在创建处理程序的线程中运行。