Checking if CountDownTimer is running
Asked Answered
D

4

24

Ive been looking to see a method to see if a CountDownTimer is running or not, but I cant find a way to, any help would be greatly appreciated

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();

}

For that how can I check if mCountDown is currently running?

Darreldarrell answered 30/1, 2014 at 8:38 Comment(3)
Can't you use a global boolean? setting in to TRUE when calling new CountDownTimer and to FALSE un your onFinish() ?Catinacation
can you elaborate what u wanna achieve????Pouched
Notice, that using of the boolean variable in onTick() and onFinish() methods to indicate the status of the timer is not clear. As you can stop the timer by the cancel() method. And in this case, your variable will be still true and indicates wrong status.Unscientific
S
61

Just put a boolean flag which indicate that by following code

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();
Steib answered 30/1, 2014 at 8:42 Comment(2)
This solution is not completely accurate, since calling mCountDown.cancel() does not trigger onFinish(), hence isRunning will be true, but the timer will not be runningHas
as @Has mentioned. you should call isRunning = false whenever you call mCountDown.cancel()Protectionism
R
4

onTick is your callback for a running process, you can either set a property to track the status.

isTimerRunning =false;

After start -> make it true; Inside OnTick -> make it true (not actually required, but a double check) Inside OnFinish -> make it false;

use the isTimerRunning property to track the status.

Rm answered 30/1, 2014 at 8:42 Comment(0)
H
0

Check if the CountDownTimer is Running and also if the app is running in the background.

@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();
}
Hummocky answered 16/10, 2017 at 18:26 Comment(0)
I
0

Set mCountDown = null in onFinish() will save a flag. In order to check if it is running by if (mCountDown != null).

Inexistent answered 9/8, 2023 at 5:27 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.