查看: 446|回复: 0

[Android教程] Android中Handler实现倒计时的两种方式

发表于 2017-11-28 08:00:01

背景:

最近项目中,正好做到登录/注册这个功能块。它需要通过发送验证码,在规定的时间内用验证码来完成登录/注册。之前的项目中也有这个功能,但是觉得太复杂了,只好自己重新实现一遍。用Handler来做,觉得代码简介,逻辑也清楚。

代码一:

  1. //在向服务端发送获取验证码成功的回调函数中,开始发消息:
  2. mHandler.obtainMessage();
  3. mHandler.sendEmptyMessage(MSG_CODE);
  4. //消息的处理:
  5. private static final int MSG_CODE = 0;
  6. private int limitTime = 121;
  7. private Handler mHandler = new Handler(new Handler.Callback() {
  8. @Override
  9. public boolean handleMessage(Message msg) {
  10. if(msg.what==MSG_CODE){
  11. limitTime--;
  12. if(limitTime>0){
  13. mHandler.sendEmptyMessageDelayed(MSG_CODE,1000);
  14. mBtnVerify.setText("倒计时:"+limitTime+"s");
  15. }else{
  16. mBtnVerify.setText("获取验证码");
  17. }
  18. return true;
  19. }
  20. return false;
  21. }
  22. });
复制代码

代码二:

  1. //在向服务端发送获取验证码成功的回调函数中,开始发消息:
  2. mHandler.post(myRunnale);
  3. //消息的处理:
  4. private int time = 11;
  5. private Handler mHandler = new Handler();
  6. private Runnable myRunnale = new Runnable() {
  7. @Override
  8. public void run() {
  9. time--;
  10. if(time>0){
  11. mHandler.postDelayed(myRunnale,1000);
  12. mTvChange.setText("剩余"+time+"s");
  13. }else{
  14. mTvChange.setText("完毕");
  15. }
  16. }
  17. };
复制代码

从上述代码中可以看出:使用Handler.post(Runnable) 是一个发布Messgae的便利方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。



回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条