Android中内部的倒计时:CountDownTimer

2017-01-14 10:05:18来源:http://www.jianshu.com/p/ad047fe4d0bd作者:邢二创人点击

      在我们的开发过程中会经常有一些倒计时的的功能需求。比如在注册的时候,我们需要用到的短信验证码,在规定的时间内我们我们不能重复的向服务器发送获得短信的请求;在我们的引导页的广告,需要几秒之后自动跳进我们的应用程序。像这种情况下,我们的处理方式一般就会用handler+thread来处理。我们需要单独开启一个线程去计时,一定得时间差后定时的去用handler发送一个信息去更改显示的时间。这样就会我们想要的效果:3、2、1、0。其实Android本身有一个实现这样的共能的类:CountDownTimer.

一、使用:

CountDownTimer是一个抽象类。这里我就模拟短息验证码的场景:去贴出代码



//60000代表的是 60秒每隔1秒去更改button的显示的时间(执行onTick()方法)


//60秒之后执行onFinish()。


private CountDownTimertimer=new CountDownTimer(60000,1000) {


//我们在这里去更改定时改变的东西


@Override


public void onTick(longmillisUntilFinished) {


if(getActivity() !=null) {


mRegisterCodeBtn.setClickable(false);


String str = getActivity().getResources().getString(R.string.my_add_bank_card);


str = String.format(str, millisUntilFinished /1000);


mRegisterCodeBtn.setText(str);


}


}


//60秒执行完之后,执行的方法。


@Override


public void onFinish() {


Btn.setText("重新获取");


tn.setEnabled(true);


tn.setClickable(true);


}


};


二、handler+thread  和 CountDownTimer的比较

    CountDownTimer的实现是用的handler的底层实现的,计算时间的功能也不是从新开启一个单独的线程去实现的,而是通过系统的时间和message的信息的绑定去实现的,不用在多单独开启一个线程。而是使用的本来就已经加载进内存中的代码去实现的功能。

所以说,两者之间。使用CountDownTimer的效率和效果会更好一些。




最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台