Android的 CountDownTimer的使用

原创 2016年05月30日 22:06:25

说道计时器,可能是因为从java出门的。所以一直使用的都是java的timer类以及配套的timertask类,今天逛逛博客,看到了 CountDownTimer这个类,照例搜索了一番,然发现他是Android封装好的一个计时的类,既然人家都封好了,使用起来肯定比timer的使用还要简单。所以做了一个简单的demo。,发现特别简单,接下来上他的用法

    TextView textView;
    CountDownTimer countdowntimer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    textView=(TextView) this.findViewById(R.id.textView1);
    countdowntimer=new CountDownTimer(10000,1000) {
        
        @Override
        public void onTick(long millisUntilFinished) {
textView.setText(millisUntilFinished+"");
            
        }
        
        @Override
        public void onFinish() {
textView.setText("finish");            
        }
    };
    countdowntimer.start();
    }

    
}

代码比较简单,其中的参数

第一个为总时间,比如3000,,

第二个 间隔时间,比如1000

然后开始看看源码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    public CountDownTimer(long millisInFuture, long countDownInterval) {
        mMillisInFuture = millisInFuture;
        mCountdownInterval = countDownInterval;
    }

这个就是构造方法了,比较简单,而且他也只有这个构造方法

    public synchronized final void cancel() {
        mCancelled = true;
        mHandler.removeMessages(MSG);
    }

然后再这个cancel类中可以看到他是通过handler去操作的,好吧,凡事离不开handler

    private Handler mHandler = new Handler() {

        @Override
        public void handleMessage(Message msg) {

            synchronized (CountDownTimer.this) {
                if (mCancelled) {
                    return;
                }

                final long millisLeft = mStopTimeInFuture - SystemClock.elapsedRealtime();

                if (millisLeft <= 0) {
                    onFinish();
                } else if (millisLeft < mCountdownInterval) {

                    sendMessageDelayed(obtainMessage(MSG), millisLeft);
                } else {
                    long lastTickStart = SystemClock.elapsedRealtime();
                    onTick(millisLeft);


                    long delay = lastTickStart + mCountdownInterval - SystemClock.elapsedRealtime();



                    while (delay < 0) delay += mCountdownInterval;

                    sendMessageDelayed(obtainMessage(MSG), delay);
                }
            }
        }
    };

这个是handler里的操作,看得出来。

1。必须是锁定的,这样就不会照成混乱。

2.对long型数据的操作,然后就没没了,所以还是很简单的,

对了,最后提醒,要启动时既得是用start方法

版权声明:菜鸟的个人见解,请指导

相关文章推荐

Android使用CountDownTimer实现短信验证码倒计时

等待总是让人感到焦急和厌烦的,特别是看不到进展的等待。所以为了不让用户痴痴地等,我们在进行某些耗时操作时,一般都要设计一个进度条或者倒计时器,让进度可视化,告诉用户“等待之后更精彩”。在使用短信验证码...

Android 倒计时CountDownTimer的使用和封装及改进

(一)介绍 官方文档。CountDownTimer是一个倒计时的类,还可以指定时间间隔定期通知,举个栗子,比如说你倒计时是100秒的,可以指定每20秒通知一次,这样开始的时候会回调一次,20秒时会...

Android使用CountDownTimer实现倒计时功能

Activity中的相关声明: private static final long DOWN_TIMER_COUNT = 3671000; private MyDownTimer mDownTimer...

Android中使用CountDownTimer封装CountDownUtil,制作一个简易定时器

编写不易,如有转载,请声明出处: 梦回河口: Demo展示图片布局代码// (layout)activity_main.xml <RelativeLayout xmlns:android="h...

Android中使用Handler以及CountDownTimer实现包含倒计时的闪屏页面

上一篇博文《Android中Handler使用浅析》通过实现倒计时闪屏页面的制作引出了Handler的使用方法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友可以点击链接回去看看。今天通...

android使用CountDownTimer类,实现类似抢购的倒计时控件

CountDownTimer由系统提供的。 倒计时核心代码: 参数: MyCountDownTimer mc = new MyCountDownTimer(280000, 100) mc.s...

Android 倒计时API CountDownTimer的使用

结构 继承关系 public abstract class CountDownTimer extends Object           java.lang.Obj...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)