美文网首页Android技术知识
Android 倒计时类的一些应用

Android 倒计时类的一些应用

作者: kolibreath | 来源:发表于2017-07-11 10:20 被阅读0次

    本次hackathon中使用了三个类处理倒计时的问题:
    1.Timer/TimerTask
    2.CountDownTimer

    使用场景,因为Catpel需要在用户设置一个时间之后就算按下home也需要倒计时,所以使用了Service+Timer/TimerTask
    核心代码如下:

      timer.schedule(new TimerTask() {
                        @Override
                        public void run() {
                            COUNT_DOWN--;
                    }, 1000, 1000);
            }
    

    参数:
    第一个1000 指的是延迟1000毫秒之后执行。
    第二个1000 指的是每过1000毫秒执行一次。
    和Serive结合:

    class MyBinder extends Binder {
    
            public void setScheduel(boolean isSet) {
                if (isSet == true) {
                   timer.schedule(new TimerTask() {
                        @Override
                        public void run() {
                            COUNT_DOWN--;
                    }, 1000, 1000);
            }
    }
    

    写一个公有方法在Binder中 在需要绑定的活动中
    new一个ServiceConnection对象

     private ServiceConnection serviceConnection = new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
             mybinder = (MyService.Mybinder)iBinder;
             myBinder.setScheduel();
            }
    
            @Override
            public void onServiceDisconnected(ComponentName componentName) {
    
            }
        } ;
    

    在需要绑定地方绑定

    bindService(intent, serviceConnection, BIND_AUTO_CREATE)
    

    在需要的地方解绑服务就可以。后台倒计时就完成了。


    使用CountdownTimer是因为它能够在回调函数中更新UI线程的ui

    同时需要注意的是:CountDownTimer(long millisInFuture, long interval);
    第一个参数是经过多长时间倒计时结束,第二个参数是间隔的时间.

    private void initCountDownTimer(){
            CountDownTimer timer = new CountDownTimer(timeMillis*1000+2000,1000) {
                @Override
                public void onTick(long l) {
                    toolbar.setTitle(timeMillis+"");
                    setToolbar(SET_,timeMillis);
                    timeMillis--;
                }
    
                @Override
                public void onFinish() {
                    ViewGroup.LayoutParams params = toolbar.getLayoutParams();
                    params.width = WindowManager.LayoutParams.MATCH_PARENT;
                    toolbar.setLayoutParams(params);
                    toolbar.setBackgroundColor(getResources().getColor(R.color.colorAccent));
                }
            };
            timer.start();
        }
    

    SetToolbar()是自己写的一个方法。用于设置toolbar的title显示时间。

    相关文章

      网友评论

        本文标题:Android 倒计时类的一些应用

        本文链接:https://www.haomeiwen.com/subject/vntphxtx.html