android关于倒计时的显示

本文介绍了在Android中实现订单详情页倒计时功能的方法,特别强调了使用Handler的postDelay()来实现计时,并提醒在下拉刷新时务必调用removeCallbacks()来避免定时器冲突的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你现在在做一个订单详情,这个订单详情是支持下拉刷新的,还有倒计时间内支付,倒计时结束了就取消订单。

首先不考虑下拉刷新会出现的问题,先看如何实现倒计时。实现的方法有很多种,比如用java的Timer,Android的Handler等。。

我使用的是Handler,使用Handler的postDelay(runnabel,time);方法来实现。

思路是这样的,当进入详情页的时候,服务器会返回一个时间戳,我们根据这个时间戳,可以将其转化为 xx分xx秒的格式,具体怎么转化,

可以自己计算,或者百度。

然后将转化得到的值设置给TextView,并且发出一条消息 ,延迟一秒postDelay(runnable,1000);

    private  long seconds = 0;//服务器返回的时间戳,可以在具体返回的地方赋值
    private Handler mHandler = new Handler();
    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            if (seconds > 0){
                seconds--;            
                tv_cancel_order_time.setText(s);              
                mHandler.postDelayed(this,1000);
            }else {
                //倒计时结束,do something			
            }
        }
    };
这样就实现了倒计时效果。

如果如果这个时候出现了,需要刷新这个界面。

mHandler.removeCallbacks(runnable);这个方法就很关键了,在需要刷新界面数据的地方先调用这个方法,然后再获取新的数据

如果不调用这个方法,那么先前的定时器没有关闭,就会导致,又开一个定时器,情况是怎么样的,可以脑补一下。。。

虽然是一个很小的问题,但是有时候就给忘记了。还是记录,并且分享一下给大家。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值