有时候想要执行定时任务,会用到 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) {} } } }