Android中内部的倒计时:CountDownTimer

      在我们的开发过程中会经常有一些倒计时的的功能需求。比如在注册的时候,我们需要用到的短信验证码,在规定的时间内我们我们不能重复的向服务器发送获得短信的请求;在我们的引导页的广告,需要几秒之后自动跳进我们的应用程序。像这种情况下,我们的处理方式一般就会用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的效率和效果会更好一些。

你可能感兴趣的:(Android中内部的倒计时:CountDownTimer)