Thread.sleep()无效?

    xiaoxiao2021-03-25  105

    有时候想要执行定时任务,会用到 Handler + Thread + Runnable 的结构:

    Handler mHandler = new Handler() { @Override public void handleMessage(Message message) { //在里面执行操作 } }; new Thread(new MyTask()).start(); class MyTask implements Runnable { @Override public void run() { Message message = new Message(); mHandler.sendMessage(message); try { Thread.sleep(5000); } catch(InterruptedException ie) { } } }

      设置为每5秒发送Message,执行一次操作。实际情况下有时两次操作间隙没有5秒,原因是当 Thread.sleep() 抛出异常后,就不会休眠五秒钟了。

      修改办法是: class MyTask implements Runnable { @Override public void run() { Message message = new Message(); mHandler.sendMessage(message); while(true) { try { Thread.sleep(5000); break; } catch(InterruptedException ie) {} } } }
    转载请注明原文地址: https://ju.6miu.com/read-15656.html

    最新回复(0)