public class ScheduledHandlerThread {
private HandlerThread mHandlerThread;
private Handler mHandler;
private String mName;
public ScheduledHandlerThread(String name) {
this.mName = name;
initIfNeeded();
}
private void initIfNeeded() {
if (mHandlerThread == null) {
mHandlerThread = new HandlerThread(mName);
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper());
}
}
public void postDelayed(Runnable task, long delaySeconds) {
initIfNeeded();
mHandler.postDelayed(task, delaySeconds * 1000);
}
public void postDelayedWithRemoveAll(Runnable task, long delaySeconds) {
initIfNeeded();
mHandler.removeCallbacksAndMessages(null);
mHandler.postDelayed(task, delaySeconds * 1000);
}
public void removeCallbacksAndMessages(){
mHandler.removeCallbacksAndMessages(null);
}
public void quit() {
if (mHandlerThread != null) {
mHandlerThread.quit();
mHandlerThread = null;
}
}
}