Android countdown CountDownTimer note, android countdown

Source: Internet
Author: User

Android countdown CountDownTimer note, android countdown

Easy countdown for Android: CountDownTimer

CountDownTimer provided by the system

When I checked the information, I found the CountDownTimer class and decisively abandoned the previous countdown practice.


Function:

30 seconds countdown interval: 1 second


Parameters:

Mc. start (); Method start

Mc. cancel (); Method end

New MyCountDownTimer (30000,100 0); the first parameter indicates that the total time is 30000 milliseconds, with an interval of 1000 milliseconds



Directly run the Code:

Package com. example. daojishi; import android. app. activity; import android. OS. bundle; import android. OS. countDownTimer; import android. util. log; import android. view. view; import android. widget. textView; import android. widget. toast;/***** @ author baozi ** countdown class CountDownTimer **/public class MainActivity extends Activity {private MyCountDownTimer mc; private TextView TV; @ Overrideprotected void onCreate (Bu Ndle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); TV = (TextView) findViewById (R. id. show); mc = new MyCountDownTimer (30000,100 0); mc. start ();} public void oncancel (View view) {Toast. makeText (MainActivity. this, "cancel", Toast. LENGTH_LONG ). show (); // toast has a display time delay mc. cancel ();} public void restart (View view) {Toast. makeText (MainActivity. this, "Start again", Toast. LE NGTH_LONG ). show (); // toast has a display time delay mc. start ();}/*** inherits CountDownTimer prevention ** override the methods onTick () and onFinish () of the parent class () */class MyCountDownTimer extends CountDownTimer {/***** @ param millisInFuture * indicates the total number of Countdown times in milliseconds. ** for example, millisInFuture = 1000 indicates 1 second. ** @ param countDownInterval * indicates interval: How many microseconds does one onTick method call? ** example: countDownInterval = 1000; indicates that onTick () **/public MyCountDownTimer (long millisInFuture, lo Ng countDownInterval) {super (millisInFuture, countDownInterval) ;}@ Overridepublic void onFinish () {TV. setText ("done") ;}@ Overridepublic void onTick (long millisUntilFinished) {Log. I ("MainActivity", millisUntilFinished + ""); TV. setText ("Countdown (" + millisUntilFinished/1000 + ")... ");}}} // please wait until then // zookeeper // zookeeper without any bugs! // Zookeeper has been completed before // zookeeper has been executed before being executed ┛ ┗ ┻ ┛

Layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <TextView        android:id="@+id/show"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" />    <Button        android:id="@+id/button1"        android:onClick="oncancel"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/show"        android:layout_below="@+id/show"        android:layout_marginLeft="50dp"        android:layout_marginTop="106dp"        android:text="cancel" />    <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/button1"        android:layout_below="@+id/button1"        android:layout_marginTop="63dp"        android:onClick="restart"        android:text="restart" /></RelativeLayout>


Appendix:

CountDownTimer source code:

/* * 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. */package android.os;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 CountDownTimer {    /**     * Millis since epoch when alarm should stop.     */    private final long mMillisInFuture;    /**     * The interval in millis that the user receives callbacks     */    private final 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 CountDownTimer(long millisInFuture, long countDownInterval) {        mMillisInFuture = millisInFuture;        mCountdownInterval = countDownInterval;    }    /**     * Cancel the countdown.     */    public final void cancel() {        mHandler.removeMessages(MSG);    }    /**     * Start the countdown.     */    public synchronized final CountDownTimer 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 (CountDownTimer.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);                }            }        }    };}

Daily improvement step forward



Can android use service and CountDownTimer to implement an inverted timer?

Use handler to implement service and live ui thread Communication

On Android, I developed a small countdown software for several days and made it a service? Or is it possible to make an Activity that can be retained in the background?

Depends on your function
If you do not need to always check the countdown in the middle, you can call the calendar for a few days, accurate to the day (or hour minutes), and receive a reminder to start the service. Start what you want to start by the service.
If you want to check and adjust the countdown halfway, you can only use the service. Add some attributes to make it last forever. If the server is shut down, write the time to the file or preference, start the instance, and run the timer again. Only some cleaner software can kill the service.
Activity is mainly used to display pages. Unlike services, android systems like to automatically recycle such objects. If you want it to last forever, you can set attributes to make it exist for a long time. But it is not recommended.
There is also a type of hard clock for android, which can still be timed off and run some programs. You can google it.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.