Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8142581
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 6, 20262026-06-06T12:51:43+00:00 2026-06-06T12:51:43+00:00

I want to restart countdown timer with new time when countdown timer finishes. I

  • 0

I want to restart countdown timer with new time when countdown timer finishes. I am giving code below:

futureInMillis = newTime();

            CountDownTimer remainingTimeCounter = new CountDownTimer(futureInMillis, 1000) {

            public void onTick(long millisUntilFinished) {
                remainingTime = calculateRemainingTime(millisUntilFinished / 1000);
                runOnUiThread(updateTime);
            }

            public void onFinish() {
                // TODO: restart counter
                cancel();
                futureInMillis = newTime();
//              remainingTimeCounter = null;
                this.start();
            }
        }.start();
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-06T12:51:44+00:00Added an answer on June 6, 2026 at 12:51 pm

    we should know what the newTime() do , and you don’t have to call the method cancel() , because the timer is in the onFinish() method , that’s means that the timer is finished counting down :

    CountDownTimer remainingTimeCounter = new CountDownTimer(futureInMillis, 1000) {
    
                public void onTick(long millisUntilFinished) {
                    remainingTime = calculateRemainingTime(millisUntilFinished / 1000);
                    runOnUiThread(updateTime);
                }
    
                public void onFinish() {
                    // TODO: restart counter
                    //cancel();  // there is no need the call the cancel() method here
                    futureInMillis = newTime();
    //              remainingTimeCounter = null;
                    this.start();
                }
            }.start();
    

    EDIT :

    there is no attribut in the class CountDownTimer to use in order to change the futureInMillis ,
    if you want to use that , you should use two CountDownTimer; you should create two classes , each class has a timer and an attribut of futureInMillis , and then when the timer of the first Class finished, instanciate the second class , pass the futureInMillis to it , and start her timer, and vice versa .

    **EDIT 2 :**
    

    Or simply Edit the code source of the class CountDownTimer from the source code android and add setters and getters for attributs futureInMillis like this :

    /*
     * Copyright (C) 2008 The Android Open Source Project
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    //add your package declaration here
    
    import android.util.Log;
    
    /**
     * Schedule a countdown until a time in the future, with
     * regular notifications on intervals along the way.
     *
     * Example of showing a 30 second countdown in a text field:
     *
     * <pre class="prettyprint">
     * new CountdownTimer(30000, 1000) {
     *
     *     public void onTick(long millisUntilFinished) {
     *         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     *     }
     *
     *     public void onFinish() {
     *         mTextField.setText("done!");
     *     }
     *  }.start();
     * </pre>
     *
     * The calls to {@link #onTick(long)} are synchronized to this object so that
     * one call to {@link #onTick(long)} won't ever occur before the previous
     * callback is complete.  This is only relevant when the implementation of
     * {@link #onTick(long)} takes an amount of time to execute that is significant
     * compared to the countdown interval.
     */
    public abstract class MyCountDownTimer {
    
        /**
         * Millis since epoch when alarm should stop.
         */
        private long mMillisInFuture;
    
        /**
         * The interval in millis that the user receives callbacks
         */
        private long mCountdownInterval;
    
        private long mStopTimeInFuture;
    
    
    
        /**
         * @param millisInFuture The number of millis in the future from the call
         *   to {@link #start()} until the countdown is done and {@link #onFinish()}
         *   is called.
         * @param countDownInterval The interval along the way to receive
         *   {@link #onTick(long)} callbacks.
         */
        public MyCountDownTimer(long millisInFuture, long countDownInterval) {
            mMillisInFuture = millisInFuture;
            mCountdownInterval = countDownInterval;
        }
    
        public void setMillisInFuture(long millisInFuture) {
            this.mMillisInFuture = millisInFuture;
        }
    
        public void setCountdownInterval(long countdownInterval) {
            this.mCountdownInterval = countDownInterval;
        }
    
        /**
         * Cancel the countdown.
         */
        public final void cancel() {
            mHandler.removeMessages(MSG);
        }
    
        /**
         * Start the countdown.
         */
        public synchronized final MyCountDownTimer start() {
            if (mMillisInFuture <= 0) {
                onFinish();
                return this;
            }
            mStopTimeInFuture = SystemClock.elapsedRealtime() + mMillisInFuture;
            mHandler.sendMessage(mHandler.obtainMessage(MSG));
            return this;
        }
    
    
        /**
         * Callback fired on regular interval.
         * @param millisUntilFinished The amount of time until finished.
         */
        public abstract void onTick(long millisUntilFinished);
    
        /**
         * Callback fired when the time is up.
         */
        public abstract void onFinish();
    
    
        private static final int MSG = 1;
    
    
        // handles counting down
        private Handler mHandler = new Handler() {
    
            @Override
            public void handleMessage(Message msg) {
    
                synchronized (MyCountDownTimer.this) {
                    final long millisLeft = mStopTimeInFuture - SystemClock.elapsedRealtime();
    
                    if (millisLeft <= 0) {
                        onFinish();
                    } else if (millisLeft < mCountdownInterval) {
                        // no tick, just delay until done
                        sendMessageDelayed(obtainMessage(MSG), millisLeft);
                    } else {
                        long lastTickStart = SystemClock.elapsedRealtime();
                        onTick(millisLeft);
    
                        // take into account user's onTick taking time to execute
                        long delay = lastTickStart + mCountdownInterval - SystemClock.elapsedRealtime();
    
                        // special case: user's onTick took more than interval to
                        // complete, skip to next interval
                        while (delay < 0) delay += mCountdownInterval;
    
                        sendMessageDelayed(obtainMessage(MSG), delay);
                    }
                }
            }
        };
    }
    

    and then you can change the millisInFuture easily like this :

    MyCountDownTimer remainingTimeCounter = new MyCountDownTimer(futureInMillis, 1000) {
    
                    public void onTick(long millisUntilFinished) {
                        remainingTime = calculateRemainingTime(millisUntilFinished / 1000);
                        runOnUiThread(updateTime);
                    }
    
                    public void onFinish() {
                        // TODO: restart counter with millisInFuture = 4000 ( 4 seconds ) 
                        //cancel();  // there is no need the call the cancel() method here
    
                        this.setMillisInFuture(4000); // here we change the millisInFuture of our timer
                        this.start();
                    }
                }.start();
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

You've pushed a code update to a daemontools service and want to restart it
i want to restart an osgi bundle at a particular time for the day
I want to restart a thread for some use, for example in the below
I want to restart my count up timer every 5 seconds from the following
I want to restart my Service automatically if the application crashes. My ideas are:
I don't want to restart the memcached server!
We want to swap in changes and would like to avoid having to restart
Want to code a key pad for an calculator. What I want to make
I am making a JFrame for a card game. I want to restart the
I have a windows form which is a countdown Timer. What is the best

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.