package com.tv.ui.metro.menu; import android.util.Log; import java.util.Timer; import java.util.TimerTask; public class TransientBoolean { private static final String TAG = "TransientBoolean"; private static final Timer Scheduler = new Timer(true); private boolean mFlag; private TransientWorker mWorker; public TransientBoolean(boolean aInit) { mFlag = aInit; } public void setValue(boolean aVal) { mFlag = aVal; } public boolean getValue() { return mFlag; } public void autoSetVal(final boolean aVal, long aDelay) { mFlag = !aVal; if(mWorker != null) { mWorker.cancel(); } mWorker = new TransientWorker(aVal); Scheduler.schedule(mWorker, aDelay); } class TransientWorker extends TimerTask { boolean mTgtVal; TransientWorker(boolean aTgtVal) { mTgtVal = aTgtVal; } @Override public void run() { //TODO debug assert only assert(mFlag != mTgtVal); if(mFlag != mTgtVal) { mFlag = mTgtVal; Log.d(TAG, "some thing wrong timer will set the value"); } else { Log.d(TAG, "Every thing fine"); } } } }