import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.Context; import android.view.View; import android.widget.TextView; public class TipManager { private static final String TAG = TipManager.class.getSimpleName(); private Context mContext; private TextView mView; private Timer timer = null; private TimerTask cancelTask = null; public TipManager(Context context, TextView view) { mContext = context; mView = view; } public void init() { timer = new Timer(); } public void release() { if (cancelTask != null) { cancelTask.cancel(); cancelTask = null; } if (timer != null) { timer.cancel(); timer = null; } } public void show(CharSequence text) { // cancel hide task if (cancelTask != null) { cancelTask.cancel(); cancelTask = null; timer.purge(); } showUI(text); } public void show(CharSequence text, long duration) { showUI(text); // cancel hide task if (cancelTask != null) { cancelTask.cancel(); cancelTask = null; timer.purge(); } cancelTask = new TimerTask() { @Override public void run() { hideUI("default"); } }; timer.schedule(cancelTask, duration); } private void showUI(final CharSequence text) { ((Activity) mContext).runOnUiThread(new Runnable() { @Override public void run() { doShow(text); } }); } private void hideUI(final CharSequence text) { ((Activity) mContext).runOnUiThread(new Runnable() { @Override public void run() { doHide(text); } }); } private void doShow(CharSequence text) { mView.setText(text); mView.setVisibility(View.VISIBLE); } private void doHide(CharSequence text) { mView.setText(text); mView.setVisibility(View.INVISIBLE); } }