/* * Copyright (c) 2012. HappyDroids LLC, All rights reserved. */ package com.happydroids.droidtowers.utils; import com.happydroids.HappyDroidConsts; import com.happydroids.utils.BackgroundTask; import static java.lang.Thread.sleep; import static java.lang.Thread.yield; public abstract class PeriodicBackgroundTask extends BackgroundTask { private final long updateFrequency; private boolean canceled; protected PeriodicBackgroundTask(long updateFrequency) { super(); this.updateFrequency = updateFrequency; } @Override protected final void execute() throws Exception { while (update() && !canceled) { try { if (HappyDroidConsts.DEBUG) { System.out.println("updateFrequency = " + updateFrequency); } sleep(updateFrequency); yield(); } catch (InterruptedException ignored) { } } } public abstract boolean update(); public synchronized void cancel() { canceled = true; } }