短信倒计时

写个本地SharedPreferences存储的倒计时,只要app缓存没清掉,这个倒计时就是公用一个时间,下面的工具类代码

//注册 的短信倒计时工具类
public class SendSMSUtil {
    private TextView desc;
    private long time = 60000;//60S
    private SharedPreferences sp = MyApplication.context.getSharedPreferences("SendSMS", Context.MODE_PRIVATE);
    private SharedPreferences.Editor editor = sp.edit();
    private CountDownTimer timer;

    public SendSMSUtil(TextView tv) {
        desc = tv;
        long oldTime = getOldTime();
        if (oldTime > 1000) {
            desc.setEnabled(false);
            desc.setText("重新获取" + oldTime / 1000 + "S");
            timer = new CountDownTimer(oldTime, 1000) {
                @Override
                public void onTick(long l) {
                    desc.setEnabled(false);
                    desc.setText("重新获取" + l / 1000 + "S");
                }

                @Override
                public void onFinish() {
                    desc.setEnabled(true);
                    desc.setText("获取验证码");
                }
            };
            timer.start();
        } else {
            desc.setEnabled(true);
            desc.setText("获取验证码");
        }
    }

    //重置 倒记时  点击事件调用它
    public void setTimer() {
        saveOldTime(System.currentTimeMillis() + time);
        timer = new CountDownTimer(time, 1000) {
            @Override
            public void onTick(long l) {
                desc.setEnabled(false);
                desc.setText("重新获取" + l / 1000 + "S");
            }

            @Override
            public void onFinish() {
                desc.setEnabled(true);
                desc.setText("获取验证码");
            }
        };
        timer.start();
    }

    private void saveOldTime(long l) {
        //直接保存到期时间
        editor.putLong("time", l);
        editor.apply();
    }

    private long getOldTime() {//获取剩余的倒记时间
        long l = sp.getLong("time", 1);
        if (l < System.currentTimeMillis()) {
            return 0;//已经过完倒及时
        }
        return l - System.currentTimeMillis();
    }

    public void close() {
        if (timer != null) {
            timer.cancel();
        }
    }

}
先初始化工具类,传入需要改变字样的textView,然后在它的点击事件调用下面方法就可以了,工具类里面还有一个关闭倒计时的方法,可以才销毁activity的时候调用一下,释放资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值