如何正确将Android的CountDownTimer设置为10分钟倒计时?
CountDownTimer 10分钟倒计时配置及OTP删除实现
CountDownTimer构造函数的第一个入参是总倒计时时长,单位为毫秒,你当前传入的1000000是错误值,换算后实际为16分40秒,不符合10分钟的需求。
10分钟对应的正确毫秒值计算逻辑:
- 1秒 = 1000毫秒
- 1分钟 = 60 * 1000 = 60000毫秒
- 10分钟总时长 = 10 * 60000 = 600000毫秒
第二个入参1000是倒计时间隔,即每秒触发一次onTick刷新UI,这个配置是正确的。
另外你当前的代码缺少onFinish回调实现,倒计时结束后删除OTP的逻辑需要写在这个回调方法里。
修正后的完整实现代码如下:
new CountDownTimer(600000, 1000) { public void onTick(long millisUntilFinished) { // 格式化数字为两位数显示 NumberFormat f = new DecimalFormat("00"); long min = (millisUntilFinished / 60000) % 60; long sec = (millisUntilFinished / 1000) % 60; timer.setText("OTP Expires in: " + f.format(min) + ":" + f.format(sec)); } @Override public void onFinish() { // 倒计时结束后的逻辑 timer.setText("OTP已过期"); // 在此处编写删除OTP验证码的业务逻辑,比如清空本地存储的验证码、重置验证入口状态等 clearLocalOTP(); } }.start();
注意:创建完CountDownTimer实例后必须调用
start()方法,否则倒计时不会启动。如果承载倒计时的页面(如Activity、Fragment)有销毁生命周期,记得在销毁回调中调用倒计时实例的cancel()方法,避免内存泄漏。
内容的提问来源于stack exchange,提问作者Tech Geek
相关产品推荐
相关产品推荐

