欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中Handler实现倒计时的两种方式

程序员文章站 2022-06-04 21:41:21
背景: 最近项目中,正好做到登录/注册这个功能块。它需要通过发送验证码,在规定的时间内用验证码来完成登录/注册。之前的项目中也有这个功能,但是觉得太复杂了,只好自己重新实...

背景:

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

代码一:

//在向服务端发送获取验证码成功的回调函数中,开始发消息:
mhandler.obtainmessage();
mhandler.sendemptymessage(msg_code);

//消息的处理:
 private static final int msg_code = 0;
 private int limittime = 121;
 private handler mhandler = new handler(new handler.callback() {
    @override
    public boolean handlemessage(message msg) {
      if(msg.what==msg_code){
        limittime--;
        if(limittime>0){
          mhandler.sendemptymessagedelayed(msg_code,1000);
          mbtnverify.settext("倒计时:"+limittime+"s");

        }else{
          mbtnverify.settext("获取验证码");
        }
        return true;
      }
      return false;
    }
  });

代码二:

//在向服务端发送获取验证码成功的回调函数中,开始发消息:
mhandler.post(myrunnale);

//消息的处理:
 private int time = 11;

  private handler mhandler = new handler();
  private runnable myrunnale = new runnable() {
    @override
    public void run() {
      time--;
      if(time>0){
        mhandler.postdelayed(myrunnale,1000);
        mtvchange.settext("剩余"+time+"s");
      }else{
        mtvchange.settext("完毕");
      }
    }
  };

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

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