私は Android で CountDownTimer をいじっていて、ある種のジレンマに陥りました。私のコードには、次のものがあります。
public class mCountDownTimer extends CountDownTimer{
protected boolean hasFinished = false;
public mCountDownTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
// TODO Auto-generated constructor stub
}
public void onFinish(){
hasFinished = true;
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
}
基本的に、CountDownTimer が終了したかどうかを確認したいと考えています。しかし、呼び出したい関数には、次のようなコードがあります。
public void function(){
public boolean finished = false;
if(interrupted)
countDownTimer.cancel();
if(temporaryCountHolder == false){
countDownTimer.start();
interrupted = true;
}
}
タイマーが終了したかどうかを確認するにはどうすればよいですか? 私は言う何かを実装したい:
if(countDownTimer.hasFinished == true){
Time now = new Time(); //finds the current time
now.setToNow();
String lsNow = now.format("%m-%d-%Y %I:%M:%S");
lsNow += " just Started\n";
try {
dumpToFile("StepsChanged", lsNow);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
しかし、ステートメントを直後に置くと
if(temporaryCountHolder == false)
ステートメントの場合、hasFinished を含む if ステートメントは常に false と評価されます。タイマーが終了した場合にのみ時間を記録できるようにするにはどうすればよいですか?