-->

How Countdowntimer continue Running in the backgro

2019-06-10 19:34发布

问题:

My timer code is:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    initializer();
    fire.setOnClickListener(this);
}

private void initializer() {

    minute = (EditText) findViewById(R.id.etMinute);
    seconds = (EditText) findViewById(R.id.etSeconds);
    fire = (Button) findViewById(R.id.bFireTimer);
    Remain=(TextView)findViewById(R.id.tvRemain);
}



@Override
public void onClick(View v) {
    switch (v.getId()) {

    case R.id.bFireTimer:

                min=minute.getText().toString();
                sec=seconds.getText().toString();
                int MIN= Integer.parseInt(min);
                int SEC=Integer.parseInt(sec);
                long TIME= (MIN*60)+SEC;
                timercount =  new MyCount(TIME * 1000, 1000);
                timercount.start();


        break;
    }

}

public class MyCount extends CountDownTimer {

     public MyCount(long millisInFuture, long countDownInterval) {
          super(millisInFuture, countDownInterval);
      }

      @Override
      public void onFinish() {
          //some script here
      }

      @Override
      public void onTick(long millisUntilFinished) {

       //some  script here 
         int remseconds=(int)millisUntilFinished/1000;
        int remminuts=remseconds/60;
            remseconds= remseconds%60;
            remminuts= remminuts%60;
            Remain.setText(String.format("%d : %02d" , remminuts,remseconds));



         // Remain.setText(""+millisUntilFinished);


      }   }

when i give input in minute and seconds and press the fire button the timer will start.But when i exit from my application then the timer is not continue running in the background.I want to continue run the timer when i exit from my application and when i start my application i see the running timer..plz i need help for doing this.. thanks in advance.

回答1:

The easiest way to do what you want is to save the current system time when your activity is stopped. When it is resumed again just check how long it passed and update the timer accordingly. To get the current time use

System.currentTimeMillis();

Have a long member variable that takes the value of current time in onStop. Make sure it's also saved in onSaveInstanceState and restored in onRestoreInstanceState. Once you are in onResume the timer value must be set to old value + (currentTime - savedTime).