Android 短信sms倒计时
发布日期:2021-06-29 11:46:29 浏览次数:4 分类:技术文章

本文共 1983 字,大约阅读时间需要 6 分钟。

将sms倒计时封装在一个类中:

public class SmsTimer {    private Timer timer;    private int totalTime=60;   //总共时长    private int currentTime;    //当前倒计时    private Handler handler=new Handler(Looper.getMainLooper());    public SmsTimer(TimerInterface timerInterface){        this.timerInterface=timerInterface;    }    public SmsTimer(int totalTime,TimerInterface timerInterface){        this.totalTime=totalTime;        this.timerInterface=timerInterface;    }    public void start(){        if(timer==null){            timer=new Timer();            currentTime=totalTime;            timer.schedule(new TimerTask() {                @Override                public void run() {                    handler.post(runnable);                }            },1000,1000);        }    }    public boolean isStart(){        return timer!=null;    }    public void cancel(){        if(timer!=null){            timer.cancel();            timer=null;        }        handler.removeCallbacksAndMessages(null);    }    private TimerInterface timerInterface;    public interface TimerInterface{        void timerFinish();        void timerPlaying(int time);    }    private Runnable runnable=new Runnable() {        @Override        public void run() {            currentTime--;            //如果倒计时完成,结束timer,调用自定义接口方法            if(currentTime<=0){                if(timerInterface!=null)timerInterface.timerFinish();                cancel();            }else{                if(timerInterface!=null)timerInterface.timerPlaying(currentTime);            }        }    };}

使用方法如下:

1.创建SmsTimer对象

SmsTimer smsTimer=new SmsTimer(new SmsTimer.TimerInterface() {    @Override    public void timerFinish() {        //倒计时完成时的回调    }    @Override    public void timerPlaying(int time) {        //倒计时进行时的回调    }});

2.启动计时器

if(!smsTimer.isStart()){    smsTimer.start();   //开启短信倒计时    //...做自己的事}

3.在Activity或Fragment的onDestroy中结束计时器,防止内存泄露

@Overrideprotected void onDestroy() {    super.onDestroy();    smsTimer.cancel();}

 

转载地址:https://blog.csdn.net/zz51233273/article/details/117948592 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:关于ue4播放(play)后画质不清晰的问题
下一篇:Flutter 十六进制与字符串的相互转换

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月13日 15时33分05秒