Android 查找倒计时是否已完成?

Android 查找倒计时是否已完成?,android,if-statement,countdown,Android,If Statement,Countdown,我在安卓上玩倒计时,我陷入了进退两难的境地。在我的代码中,我有以下内容: public class mCountDownTimer extends CountDownTimer{ protected boolean hasFinished = false; public mCountDownTimer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInte

我在安卓上玩倒计时,我陷入了进退两难的境地。在我的代码中,我有以下内容:

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

    }
}
基本上我想知道我的倒计时是否结束了。但在我想调用它的函数中,我有一些代码:

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。当且仅当计时器已完成时,我如何获取它以便记录时间

根据您的评论,您得到假值的原因是因为您在计时器停止之前执行语句

你可以像下面这样走

@Override
public void onFinish(){
        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();
        }
}

要简单地记录时间,只需将这些方法移动到countdowntimer类的onFinish方法。我不知道dumpToFile如果它是另一个类的方法,你可以把它变成一个静态方法并使用它,甚至是一些合适的替代方法。希望这有帮助。

您需要取消OnFinsh中的倒计时

    @Override
    public void onFinish() {
        Log.v(TAG, "On Finish");
        Intent intent = new Intent(TIME_OUT);
        intent.putExtra("dialog", "timeout");
        sendBroadcast(intent);
        countDownTimer.cancel();
    }

你能展示一下在
if(temporaryCountHolder==false)
之后你是如何准确地使用
if(countDownTimer.hasFinished==true)
的吗?@JJPA我刚刚在post中添加了如何使用countDownTimer.hasFinished==true方法,它是在
if(temporaryCountHolder==false){countDownTimer.start();interrupted=true;}
还是在这句话中?@JJPA是的。我注意到如果我把if语句放在后面,倒计时将不会结束,因此hasFinished将为false,它永远不会进入if语句。你确定这些语句是在倒计时结束后执行的吗?哇,谢谢!那就一个问题。当倒计时结束时,是否自动调用onFinish而无需我调用它?是当倒计时结束时,
onFinish
方法被自动调用为回调
onFinish
-->根据文档,当时间到时,将触发回调。太棒了!非常感谢你的帮助。我真的很感激!