我实际上是在计时器上运行,以便在后台运行。所以到目前为止一切都很好,一切都很好。除了那个, 1)当我在计时器中进行倒计时至00:00时,我退出此活动并重新进入 要么 2)当我的活动时间到了00:00,然后重新进入...
当我重新进入活动时,微调器将再次启用。
私有静态最终长START_TIME_IN_MILLIS = 10000;
private TextView mTextViewCountDown;
private Button mButtonStart;
private Button mButtonReset;
private CountDownTimer mCountDownTimer;
private boolean mTimerRunning;
private long mTimeLeftInMillis;
private long mEndTime;
mTextViewCountDown = (TextView)findViewById(R.id.text_view_countdown);
mButtonStart = (Button)findViewById(R.id.buttonStart);
mButtonReset = findViewById(R.id.button_reset);
mButtonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startTimer();
}
});
mButtonReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resetTimer();
}
});
public void startTimer(){
mEndTime = System.currentTimeMillis() + mTimeLeftInMillis;
mCountDownTimer = new CountDownTimer(mTimeLeftInMillis,1000) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftInMillis = millisUntilFinished;
updateTimer();
}
@Override
public void onFinish() {
Spinner spinner = findViewById(R.id.spinner);
spinner.setEnabled(false);//upon finish,stop the function to bid and wait for seller to delete post.
}
}.start();
mTimerRunning = true;
}
private void resetTimer() {
mTimeLeftInMillis = START_TIME_IN_MILLIS;
updateTimer();
mButtonReset.setVisibility(View.INVISIBLE);
mButtonStart.setVisibility(View.VISIBLE);
}
public void updateTimer(){
int minutes = (int) (mTimeLeftInMillis/1000)/60;
int seconds = (int) (mTimeLeftInMillis/1000) %60;
String timeLeftFormat = String.format(Locale.getDefault(),"%02d:%02d", minutes,seconds);
mTextViewCountDown.setText(timeLeftFormat);
}
@Override
protected void onStop(){
super.onStop();
SharedPreferences prefs = getSharedPreferences("prefs",MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putLong("millisLeft",mTimeLeftInMillis);
editor.putBoolean("timerRunning",mTimerRunning);
editor.putLong("endTime",mEndTime);
editor.apply();
if (mCountDownTimer != null) {
mCountDownTimer.cancel();
}
}
@Override
protected void onStart(){
super.onStart();
SharedPreferences prefs = getSharedPreferences("prefs",MODE_PRIVATE);
mTimeLeftInMillis = prefs.getLong("millisLeft", START_TIME_IN_MILLIS);
mTimerRunning = prefs.getBoolean("timerRunning",false);
updateTimer();
if(mTimerRunning){
mEndTime = prefs.getLong("endTime", 0);
mTimeLeftInMillis = mEndTime - System.currentTimeMillis();
if (mTimeLeftInMillis<0){
mTimeLeftInMillis = 0;
mTimerRunning = false;
updateTimer();
} else{
startTimer();
}
}
}
我用来倒计时到00:00时禁用微调器的代码是 Spinner spinner = findViewById(R.id.spinner); spinner.setEnabled(false);