返回

Android 轻轻松松搞定验证码倒计时:页面关闭不中断,进程杀掉也不中断!

Android

Android 验证码倒计时实现

1. 基本原理

验证码倒计时的基本原理很简单,就是创建一个计时器,每隔一段时间就更新一次验证码的剩余时间。当验证码的剩余时间为 0 时,则表示验证码已过期,需要重新获取。

2. CountDownTimer

Android 中提供了一个 CountDownTimer 类,可以很方便地创建计时器。CountDownTimer 的构造函数有两个参数:第一个参数是计时器的总时间,第二个参数是计时器每隔一段时间更新一次的时间间隔。

CountDownTimer timer = new CountDownTimer(30000, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {
        // 更新验证码的剩余时间
    }

    @Override
    public void onFinish() {
        // 验证码已过期,需要重新获取
    }
};

3. 持久化存储

为了保证验证码的倒计时即使在页面切换或进程被杀掉后也不会中断,需要将验证码的剩余时间存储到持久化存储中。Android 中提供了多种持久化存储方式,这里使用 SharedPreferences。

SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
sp.edit().putLong("verify_code_time", timer.getMillisInFuture()).commit();

4. 具体实现

将以上内容组合起来,就可以实现验证码倒计时的功能了。

// 获取验证码的剩余时间
long remainingTime = sp.getLong("verify_code_time", 0);

// 创建计时器
CountDownTimer timer = new CountDownTimer(remainingTime, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {
        // 更新验证码的剩余时间
        tvVerifyCodeTime.setText(millisUntilFinished / 1000 + "s");
    }

    @Override
    public void onFinish() {
        // 验证码已过期,需要重新获取
        tvVerifyCodeTime.setText("重新获取");
    }
};

// 启动计时器
timer.start();

这样,就实现了验证码倒计时的功能了。即使页面切换或进程被杀掉,计时也不会中断。

结语

以上就是超简单实现验证码倒计时的全部内容了。希望对大家有所帮助。