java - 尽管使用了 sleep ,但时间还是错误

标签 java android sleep thread-sleep

我正在使用 IOIO Android 开发板。我正在尝试控制 2 个引脚和一个 LED,并每隔一段时间将它们打开关闭。到目前为止,它连接良好,LED 和引脚可以打开和关闭,但时机不正确。我认为问题出在 sleep() 函数上。 任何帮助或指导将不胜感激。

                 class IOIOThread extends Thread {
        private IOIO ioio_;
        private boolean abort_ = false;


        @Override
        public void run() {
            super.run();
            while (true) {
                synchronized (this) {
                    if (abort_) {
                        break;
                    }
                    ioio_ = IOIOFactory.create();
                }
                try {
                    setText(R.string.wait_ioio);
                    ioio_.waitForConnect();
                    setText(R.string.ioio_connected);

                    while (true) {

                        while((button_.isChecked())==true){

                            DigitalOutput led = ioio_.openDigitalOutput(0,   false);;
                            DigitalOutput S1 = ioio_.openDigitalOutput(35,   false);
                            DigitalOutput S2 = ioio_.openDigitalOutput(36,  false);
                            DigitalOutput S3 = ioio_.openDigitalOutput(37,   false);
                            DigitalOutput S4 = ioio_.openDigitalOutput(38,   false);

                            holdTime=30000;

                            for (currentTime=0; currentTime<=holdTime;)
                            {
                                led.write(true);
                                S1.write(true);
                                S2.write(true);
                                sleep(4000);
                                led.write(false);
                                S1.write(false);
                                S2.write(false);
                                sleep(2000);
                                led.write(true);
                                S3.write(true);
                                S4.write(true);
                                sleep(4000);
                                led.write(false);
                                S3.write(false);
                                S4.write(false);
                                sleep(4000);
                                currentTime = currentTime+14000;

                        }}}}

                catch (ConnectionLostException e) {
                } catch (Exception e) {
                    Log.e("HelloIOIOPower", "Unexpected exception caught", e);
                    ioio_.disconnect();
                    break;
                } finally {
                    try {
                        ioio_.waitForDisconnect();
                    } catch (InterruptedException e) {
                    }
                }
            }
        }

最佳答案

Sleep() 不是实时的 - 它只是将线程搁置至少指定的毫秒数。之后,它可用于调度并将在某个时候执行。

关于java - 尽管使用了 sleep ,但时间还是错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8081042/

相关文章:

java - Web 服务客户端之上的包装器

java - 是否可以将字符串中的文本颜色更改为 Java 中的多种颜色?

java - 如何设置 java.library.path 而无需在命令行上指定

android - 应用程序的哪一部分被认为是上下文? java 文件、.xml 文件还是两者的一部分?

Android XML 错误 : no resource identifier found for attribute 'xmlns' in package 'android'

android - 支持LG G3,仅限手机

java - 您如何在模块化 Java 项目中组织测试?

c - 通过 SIGCHLD sleep

c - C 中是否有 sleep() 的替代方案?

c++ - 别名表达式的最佳方法