Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检查倒计时是否正在运行_Android_Timer_Countdowntimer - Fatal编程技术网

Android 检查倒计时是否正在运行

Android 检查倒计时是否正在运行,android,timer,countdowntimer,Android,Timer,Countdowntimer,我一直在寻找一种方法,看看是否倒计时运行或没有,但我找不到一种方法,任何帮助将不胜感激 if (position == 0) { mCountDown = new CountDownTimer((300 * 1000), 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds remaining: "

我一直在寻找一种方法,看看是否倒计时运行或没有,但我找不到一种方法,任何帮助将不胜感激

if (position == 0) {

    mCountDown = new CountDownTimer((300 * 1000), 1000) {

        public void onTick(long millisUntilFinished) {
            mTextField.setText("seconds remaining: "
                    + millisUntilFinished / 1000);
        }

        public void onFinish() {
            mTextField.setText("0:00");
            String path = "/sdcard/Music/ZenPing.mp3";
            try {

                mp.reset();
                mp.setDataSource(path);
                mp.prepare();
                mp.start();

            } catch (IOException e) {
                Log.v(getString(R.string.app_name),
                        e.getMessage());
            }
        }
    }.start();

}

为此,如何检查mCountDown当前是否正在运行?

单击正在运行的进程的回调,您可以设置一个属性来跟踪状态

isTimerRunning =false;
start->实现后
内部
OnTick->make it true
(实际上不需要,但需要仔细检查) 内部
OnFinish->使其为假


使用isTimerRunning属性来跟踪状态。

只需放置一个
布尔
标志,通过以下代码指示

isTimerRunning =false;
boolean isRunning = false;

mCountDown = new CountDownTimer((300 * 1000), 1000) {

    public void onTick(long millisUntilFinished) {
        isRunning = true;
        //rest of code
    }

    public void onFinish() {
        isRunning= false;
        //rest of code
    }
}.start();

检查倒计时是否正在运行,以及应用程序是否在后台运行

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    myButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            myButton.setText("Button clicked");
            countDownTimer = new CountDownTimer( 3000, 1000) {
                @Override
                public void onTick(long millisUntilFinished) {
                    //After turning the Smartphone the follow both methods do not work anymore
                    if (!runningBackground) {
                        myButton.setText("Calc: " + millisUntilFinished / 1000);
                        myTextView.setText("Calc: " + millisUntilFinished / 1000);
                    }
                }
                @Override
                public void onFinish() {
                    if (!runningBackground) {
                        //Do something
                    }
                    mTextMessage.setText("DONE");
                    runningBackground = false;
                    running = false;
                }
            };
            //timer started
            countDownTimer.start();
            running = true;
        }
    });
}

@Override
protected void onResume() {
    super.onResume();
    runningBackground = false;
}

@Override
protected void onPause() {
    runningBackground = true;
    super.onPause();
}

你不能使用全局布尔值吗?调用new CountDownTimer时将in设置为TRUE,将onFinish()设置为FALSE?能否详细说明您想要实现的目标?请注意,在onTick()和onFinish()方法中使用布尔变量来指示计时器的状态并不清楚。因为可以通过cancel()方法停止计时器。在这种情况下,您的变量仍然为true并指示错误的状态。此解决方案并不完全准确,因为调用mCountDown.cancel()不会触发onFinish(),因此isRunning将为true,但计时器不会像@Cris提到的那样运行。无论何时调用
mCountDown.cancel()