package framework.gameMain;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public abstract class RealTimeActivity extends Activity implements Runnable {
//インターバル確認用変数
private long interval = 15L;
private long prevTime = 0L;
private ScheduledThreadPoolExecutor schedule = new ScheduledThreadPoolExecutor(1);
private boolean fixedInterval;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
protected void start(long interval){
this.interval = interval;
this.fixedInterval = false;
schedule.scheduleWithFixedDelay(this, interval, interval, TimeUnit.MILLISECONDS);
}
protected void start(long delay, long interval){
this.interval = interval;
this.fixedInterval = false;
schedule.scheduleWithFixedDelay(this, delay, interval, TimeUnit.MILLISECONDS);
}
protected void start(long delay, long interval, boolean fixedInterval){
this.interval = interval;
this.fixedInterval = fixedInterval;
schedule.scheduleWithFixedDelay(this, delay, interval, TimeUnit.MILLISECONDS);
}
protected void stop() {
schedule.shutdown();
}
//繰り返し実行される部分
public void run(){
long interval;
if (prevTime == 0L || fixedInterval) {
interval = this.interval;
prevTime = System.currentTimeMillis();
} else {
long curTime = System.currentTimeMillis();
interval = curTime - prevTime;
prevTime = curTime;
}
update(interval);
}
//intervalミリ秒のインターバルをおいて定期実行
protected abstract void update(long interval);
}