Skip to content

Instantly share code, notes, and snippets.

@codeswimmer
Created June 18, 2011 01:44
Show Gist options
  • Select an option

  • Save codeswimmer/1032711 to your computer and use it in GitHub Desktop.

Select an option

Save codeswimmer/1032711 to your computer and use it in GitHub Desktop.
Android: lightweight means of performing a task on a periodic basis (i.e. polling every 500 milliseconds).
package com.codeswimmer.android.executor;
import java.util.concurrent.Executor;
import android.os.Handler;
import android.os.SystemClock;
public class PeriodicExecutor implements Executor {
private static final Handler poller = new Handler();
private Runnable command;
private long period;
public PeriodicExecutor(long period) {
this.period = period;
}
@Override
public void execute(Runnable command) {
this.command = command;
poller.postDelayed(executor, period);
}
private final Runnable executor = new Runnable() {
@Override
public void run() {
long uptimeMillis = SystemClock.uptimeMillis();
command.run();
poller.postAtTime(this, uptimeMillis + PeriodicExecutor.this.period);
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment