使用Timer 定时器,结合TimerTask,HandlerMessage完成验证码发送功能
来源:互联网 发布:程序员培训全日制吗 编辑:程序博客网 时间:2024/04/30 06:06
项目需求:点击“发送验证码”,开始倒计时,倒计时为0时显示重新发送。
1.Timer的使用:Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。
声明:
private Timer timer; private MyTasker timerTask; private int i;
发送验证码点击事件:
i=60;//定义从60s开始计时 timerTask=new MyTasker(); timer=new Timer(); timer.schedule(timerTask,0,1000);这里的timer.schedule(timerTask,0,100);
//第一个参数 TimerTask 类,实现 public void run() 方法,因为 TimerTask 类实现了 Runnable 接口。
//第二个参数"0"的意思是:(0就表示无延迟)当你调用该方法后,该方法必然会调用 TimerTask 类 TimerTask 类 中的 run() 方法,这个参数就是这两者之间的差值,转换成汉语的意思就是说,用户调用 schedule() 方法后,要等待这么长的时间才可以第一次执行 run() 方法。
//第三个参数"60*60*1000"的意思就是:(单位是毫秒60*60*1000为一小时)(单位是毫秒3*60*1000为三分钟)第一次调用之后,从第二次开始每隔多长的时间调用一次 run() 方法
2.TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。
我们自定义个MyTimerTask类继承TimerTask;
class MyTasker extends TimerTask{ @Override public void run() { handler.sendEmptyMessage(i--); } }
private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what==0||msg.what<0){ tv_msg.setText("重新发送"); timer.cancel(); timerTask.cancel(); }else { tv_msg.setText(msg.what+"秒"); } super.handleMessage(msg); } };
实际项目中,我们点击发送验证码后,调用后台接口,接口成功后进行倒计时,同时设置点击按钮setEable(false),这样优化用户体验。
1 0
- 使用Timer 定时器,结合TimerTask,HandlerMessage完成验证码发送功能
- 验证码 timer timertask handler
- Java 中Timer和TimerTask 定时器使用
- Java定时器Timer和TimerTask的使用
- Timer TimerTask 定时器线程
- timer+timertask 制作定时器
- 定时器Timer以及TimerTask
- 倒计时获取验证码 runOnUiThread Timer TimerTask
- android定时器Timer与TimerTask
- java定时器--TimerTask 与 Timer
- JAVA定时器Timer&TimerTask剖析
- Java定时器timer以及timerTask
- JAVA定时器 (Timer TimerTask)学习
- Timer定时器、TimerTask、Random随机数
- 定时器实现:Handler+Timer+TimerTask
- 定时器 Timer和TimerTask详解
- Timer,Timertask的使用
- timer,TimerTask的使用
- Kettle 7
- 微信开发之移动手机WEB页面(HTML5)Javascript实现一键拨号及短信发送
- 在R中进行基于稳健马氏距离的异常检验
- tensorflow常用函数 (二)
- Android用WebView遇到的各种问题
- 使用Timer 定时器,结合TimerTask,HandlerMessage完成验证码发送功能
- TCP如何保证可靠数据传输
- OC--NSString字符串
- 前端关于日期比较大小的方法
- Cocoapods 卸载,重装,更新版本,(本人亲测)
- 内存优化个人总结
- BZOJ3993 星际战争 题解(二分+最大流)
- 高仿IOS 提示框
- unity 绘制面