如果你现在在做一个订单详情,这个订单详情是支持下拉刷新的,还有倒计时间内支付,倒计时结束了就取消订单。
首先不考虑下拉刷新会出现的问题,先看如何实现倒计时。实现的方法有很多种,比如用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);这个方法就很关键了,在需要刷新界面数据的地方先调用这个方法,然后再获取新的数据
如果不调用这个方法,那么先前的定时器没有关闭,就会导致,又开一个定时器,情况是怎么样的,可以脑补一下。。。
虽然是一个很小的问题,但是有时候就给忘记了。还是记录,并且分享一下给大家。