Java Firebase查询下Android内部倒计时两次
我试图在Android studio中实现一个简单的倒计时,它根据从Firebase数据库读取的时间触发。在我的主要活动中,我寻找某种价值,这种价值有时存在,有时不存在。在casi中,它存在,倒计时应该触发Java Firebase查询下Android内部倒计时两次,java,android,firebase,firebase-realtime-database,countdown,Java,Android,Firebase,Firebase Realtime Database,Countdown,我试图在Android studio中实现一个简单的倒计时,它根据从Firebase数据库读取的时间触发。在我的主要活动中,我寻找某种价值,这种价值有时存在,有时不存在。在casi中,它存在,倒计时应该触发 // Search the database Query query = mRef .child(getString(R.string.dbname_reservations)) .orderByKey() .e
// Search the database
Query query = mRef
.child(getString(R.string.dbname_reservations))
.orderByKey()
.equalTo(reservation_id);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull final DataSnapshot snapshot) {
if (snapshot.exists()) {
countDownTimer = new CountDownTimer(40000, 1000) {
public void onTick(long millisUntilFinished) {
mReservationCommerceName.setText(millisUntilFinished + "");
}
public void onFinish() {
mReservationCommerceName.setText("DONE");
}
}.start();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
初始时间只是一个示例时间,用来说明它是如何工作的。计时器启动时,每秒滴答两次。当我实现计算初始时间的方法时,它是一个简单的减法,并且是一个按照我的意愿显示时间的方法,它每秒钟执行两次操作。在我的display方法中,以毫秒为单位计算时间并返回以分钟为单位的时间格式,每隔一秒我就会在TextView中得到两个不同的文本:一个是正确的显示(分钟),另一个是以毫秒为单位的时间
我就是这样做的:
private String displayTimeLeft(long timeLeft) {
double hour, minute, second;
hour = Math.floor(timeLeft / 1000f / 60f / 60f);
minute = Math.floor(timeLeft / 1000f / 60f);
second = Math.floor(timeLeft / 1000f);
DecimalFormat precision = new DecimalFormat("0");
if (hour > 0) {
return precision.format(hour) + ":" + precision.format(minute);
} else if (minute == 0) {
if (second < 10) {
return precision.format(minute) + ":0" + precision.format(second);
} else {
return precision.format(minute) + ":" + precision.format(second);
}
} else {
return precision.format(minute);
}
}
我确信这与它在查询中这一事实有关,因为我在代码的其他部分实现了倒计时,并且它工作正常
mReservationCommerceName.setText(displayTimeLeft(millisUntilFinished));