实现轮询的三种方案:
方案一:Timer + Thread
实现思路:使用timer定时执行TimerTask
代码:
class CommitTimer extends TimerTask {
@Override
public void run() {
commitLock.lock();
try {
doSome(0);//网络请求
} catch (Exception ex) {
ex.printStackTrace();
} finally {
commitLock.unlock();
}
}
}
timer = new Timer();
//Teask,延时时间,轮询间隔
timer.schedule(new CommitTimer(), 100, 1000);
在界面的onDestory或者onStop方法中释放timer,避免造成内存泄漏
if (timer != null) {
timer.purge();
timer.cancel();
timer = null;
}
方案二:HandlerThread
实现思路:在HandlerMessage方法中执行任务,任务结束后向MessageQueue中添加延时消息
代码: