Java 同步倒计时-android开发
我有一个应用程序,它有一个倒计时计时器,当每个用户打开应用程序时,应该显示相同的计时器。为了做到这一点,我已经根据用户的手机显示在大纪元时间的时间。我做以下计算(我认为…)以确保每部手机显示相同的时间,并且倒计时时钟连续且准确。然而,每次我打开应用程序时,时钟都处于完全不同的时间,我认为它应该持续倒计时和重置。发生了什么?我已将我的代码包括在下面:Java 同步倒计时-android开发,java,android,Java,Android,我有一个应用程序,它有一个倒计时计时器,当每个用户打开应用程序时,应该显示相同的计时器。为了做到这一点,我已经根据用户的手机显示在大纪元时间的时间。我做以下计算(我认为…)以确保每部手机显示相同的时间,并且倒计时时钟连续且准确。然而,每次我打开应用程序时,时钟都处于完全不同的时间,我认为它应该持续倒计时和重置。发生了什么?我已将我的代码包括在下面: private static final int COUNTDOWN_DURATION = 30; //time in seconds priva
private static final int COUNTDOWN_DURATION = 30; //time in seconds
private static final long BASE_TIME = 1470729402L; //an arbitrary Epoch time that I have picked as a reference point
private TextView tvTimer;
private Long currentTimeMillis;
private int finalTime;
private boolean firstTime;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
//set up basics
...
//set up timer
tvTimer = (TextView) findViewById(R.id.tvTimer);
firstTime = true;
setCurrentTime();
}
private void setCurrentTime() {
currentTimeMillis = System.currentTimeMillis();
long currentTimeSecs = currentTimeMillis/1000;
long timeDiff = currentTimeSecs - BASE_TIME;
//determines what spot the countdown timer is at when the app is started
finalTime = (int) (timeDiff % COUNTDOWN_DURATION);
resetTimer();
}
public void resetTimer(){
if (firstTime) {
CountDownTimer countDownTimer = new CountDownTimer(finalTime * 1000, 1000) {
public void onTick(long millisUntilFinished) {
tvTimer.setText(" " + millisUntilFinished / 1000 + " ");
}
public void onFinish() {
resetTimer();
}
};
countDownTimer.start();
firstTime = false;
}
else {
CountDownTimer countDownTimer = new CountDownTimer(COUNTDOWN_DURATION * 1000, 1000) {
public void onTick(long millisUntilFinished) {
tvTimer.setText(" " + millisUntilFinished / 1000 + " ");
}
public void onFinish() {
resetTimer();
}
};
countDownTimer.start();
}
}