使用Handler简单做一个时间戳差倒计时。
获取当前时间戳(10位数)
//获取当前时间戳
currentTime = System.currentTimeMillis()/1000;
Handler代码
/**
* handler 持有当前 Activity 的弱引用防止内存泄露
*/
private Handler mHandler = new Handler(Looper.myLooper()) {
//弱引用
WeakReference<DetailActivity> mWeakReference = new WeakReference<>(DetailActivity.this);
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
DetailActivity detailActivity = mWeakReference.get();
switch (msg.what) {
case COUNT_DOWN:
//开始时间(大于当前时间戳 10位数)
long startTime = detailKCBean.getStart_time();
//判断开始时间是否比当前时间大
if (startTime > currentTime) {
//通过2个时间戳差计算时间
String downTime = CountDownUtils.initData(startTime, currentTime); //展示倒计时
detailActivity.tv_time_a.setText(downTime);
//每次调用当前时间加1秒
currentTime++;
//每隔一秒休眠一次
mHandler.sendEmptyMessageDelayed(COUNT_DOWN, 1000);
} else {
//隐藏倒计时控件
detailActivity.ll_time_a.setVisibility(View.GONE);
}
break;
default:
break;
}
}
};
时间戳计算时间
package 《自己包名》;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 作者:${丁新辉} on
* 邮箱:dingxinhui_vip@163.com
* 备注:时间戳差时间计算
* <p>
* # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # #
* # _oo0oo_ #
* # o8888888o #
* # 88" . "88 #
* # (| -_- |) #
* # 0\ = /0 #
* # ___/`---'\___ #
* # .' \\| |# '. #
* # / \\||| : |||# \ #
* # / _||||| -:- |||||- \ #
* # | | \\\ - #/ | | #
* # | \_| ''\---/'' |_/ | #
* # \ .-\__ '-' ___/-. / #
* # ___'. .' /--.--\ `. .'___ #
* # ."" '< `.___\_<|>_/___.' >' "". #
* # | | : `- \`.;`\ _ /`;.`/ - ` : | | #
* # \ \ `_. \_ __\ /__ _/ .-` / / #
* # =====`-.____`.___ \_____/___.-`___.-'===== #
* # `=---=' #
* # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #
* # #
* # 佛祖保佑 永无BUG #
* # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #
*/
public class CountDownUtils {
public CountDownUtils() {
/* cannot be instantiated */
throw new UnsupportedOperationException("cannot be instantiated");
}
/**
* 计算倒计时
*
* @param startTime 开播时间
* @param currentTime 当前时间
* @return 开播倒计时
*/
public static String initData(long startTime, long currentTime) {
long diff = startTime - currentTime;
long days = diff / (60 * 60 * 24);
long hours = (diff - days * (60 * 60 * 24)) / (60 * 60);
long minutes = (diff - days * (60 * 60 * 24) - hours * (60 * 60)) / 60;
long sec = (diff - days * (60 * 60 * 24) - hours * (60 * 60) - minutes * 60);
// 输出结果
String time = days + " 天 " + hours + "小时 "
+ minutes + "分 " + sec + "秒";
return time;
}
}
Handler调用
/**
* 倒计时
*/
private void setTime() {
Message msg = new Message();
msg.what = COUNT_DOWN;
mHandler.sendMessage(msg);
}
如果对您有帮助麻烦点个赞加个关注表示支持,如有错误可评论提出。