java - while 循环内的延迟不起作用

标签 java android multithreading delay

我正在尝试使用 Thread.sleep() 方法在 while 循环内进行延迟。这是我的代码:

 new Thread(new Runnable() {
                    @Override
                    public void run() {
                            z=0;
                        while (z<45){
                            z++;

                            handler.post(new Runnable() {
                                @Override
                                public void run() {
                                    time.setText(Integer.toString(45-z));


                                }
                            });

                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();

                            }



                        }


                    }
                }).start();

这段代码本来可以工作,但突然出现了问题。它开始延迟不到一分钟,总时间为 500 毫秒,总时间小于该时间

最佳答案

相反,如果使用不同的线程、Thread.sleep()、Handler 和 while 循环,您可以仅尝试使用这样的 Handler,

private int timerCount = 0;

private static Handler myHandler = new Handler();

private void runVVRunnable() {
    myHandler.postDelayed(runnable, 1000);
}

private Runnable runnable = new Runnable() {

    @Override
    public void run() {
        timerCount++;

        if ((time == null)) {
            return;
        }

        if (timerCount <= 45) {
            time.setText(Integer.toString(timerCount));

            runVVRunnable();
        }
    }
};

@Override
protected void onDestroy() {
    super.onDestroy();

    myHandler.removeCallbacks(runnable);
}

您只需调用runVVRunnable(),它将执行与 while 循环相同的过程

关于java - while 循环内的延迟不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45087931/

相关文章:

java - 以单例模式创建对象时,引用返回什么

java - 无法将值放入 M​​DC

android - 单击 [仅限 Android],OneSignal 不会打开我的 flutter 应用程序

java - 为什么可以在循环中创建具有相同变量名的线程对象?

java - 如何找到 ReSTLet 框架 2.1 版中使用的 Jetty 版本?

java - 模型映射器中的延迟初始化异常

android - 如何为安卓做跨应用自动化测试

android - 缓存 Fragment 是一种好习惯吗?

c# - 如何减少后台工作程序中使用匿名管道的程序的 CPU 使用率?

c# - 跨线程Winforms控件编辑