package com.android.smap.utils; import android.os.Handler; public class Refresher implements Runnable { public interface RefreshListener { public void onRefresh(); } private int mInterval; private final Handler mHandler; private final RefreshListener mListener; /** * @param refreshInterval * The interval to refresh, in milliseconds. * @param listener * The listener that's called when the refresh time is completed. */ public Refresher(int refreshInterval, RefreshListener listener) { if (refreshInterval <= 0) { throw new IllegalArgumentException(); } if (listener == null) { throw new IllegalArgumentException(); } mInterval = refreshInterval; mListener = listener; mHandler = new Handler(); } @Override public void run() { mListener.onRefresh(); start(); } public void start() { mHandler.postDelayed(this, mInterval); } public void stop() { mHandler.removeCallbacks(this); } public void reset() { stop(); start(); } public void setRefreshInterval(int time) { if (time <= 0) { throw new IllegalArgumentException(); } mInterval = time; reset(); } public int getRefreshInterval() { return mInterval; } }