Garmaine Staff asked 2 years ago

I created a button that counts clicks and created a timer for 5 seconds. After the 5 seconds, I want to find the clicks per second (cps) by taking counter and dividing it by 5. However, the problem is that after I reset counter to 0, the code for finding cps still runs in the onFinish method and makes the cps also to 0.

protected void onCreate(Bundle savedInstanceState) {

        mtextViewCountDown = (TextView) findViewById(;
        btnClick = (Button) findViewById(;
        displayCPS = (TextView) findViewById(;

        btnClick.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {


    public void startTimer(){
        countDownTimer = new CountDownTimer(timeLeft,1000){
            public void onTick(long l){

                timeLeft = l;
            public void onFinish() {

                cps = counter / 5;
                displayCPS.setText("CPS: " + Double.toString(cps));

    public void updateTimer(){
        int minutes = 0;
        int seconds = (int) timeLeft / 1000;
        String timeLeftFormatted = String.format(Locale.getDefault(),"%02d:%02d", minutes, seconds);

    public void resetTimer(){
        counter = 0;
        timeLeft = 5000;


I tried to debug it and print out the cps in console.

I/System.out: 5.0
I/System.out: 0.0
I/chatty: uid=10088(com.example.cpspractice) identical 14 lines
I/System.out: 0.0
I/System.out: 0.0
I/chatty: uid=10088(com.example.cpspractice) identical 10 lines
I/System.out: 0.0

It seems to be like onFinish runs multiple times. Do you guys have any idea on how to make it only run once?