使用计时器(倒数计时器在后台运行)在倒计时至00:00时禁用微调器

时间:2019-02-23 15:35:15

标签: android timer

我实际上是在计时器上运行,以便在后台运行。所以到目前为止一切都很好,一切都很好。除了那个, 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);

0 个答案:

没有答案