Как Таймер обратного отсчета продолжает работать в фоновом режиме, когда я нажимаю кнопку «Назад» в своем приложении?

Мой код таймера:

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);


      }   }

когда я ввожу ввод в минуту и ​​​​секунды и нажимаю кнопку огня, таймер запускается. Но когда я выхожу из своего приложения, таймер не продолжает работать в фоновом режиме. Я хочу продолжать запускать таймер, когда я выхожу из своего приложения и когда я запускаю свое приложение, я вижу работающий таймер.. пожалуйста, мне нужна помощь для этого.. заранее спасибо.


person Nirupoma Saha Chaiti    schedule 05.04.2012    source источник


Ответы (1)


Самый простой способ сделать то, что вы хотите, — сохранить текущее системное время, когда ваша деятельность остановлена. Когда он снова возобновится, просто проверьте, сколько времени прошло, и соответственно обновите таймер. Чтобы получить текущее время, используйте

System.currentTimeMillis();

Имейте длинную переменную-член, которая принимает значение текущего времени в onStop. Убедитесь, что он также сохранен в onSaveInstanceState и восстановлен в onRestoreInstanceState. Когда вы находитесь в onResume, значение таймера должно быть установлено на старое значение + (currentTime - saveTime).

person azertiti    schedule 05.04.2012