Pause CountDownTimer in Android when activity is not in front

后端 未结 7 603
旧巷少年郎
旧巷少年郎 2020-12-02 20:43

I have an activity that uses a CountDownTimer that counts down from 10. How do I pause that timer when the activity is no longer in focus, like if the user get a call or som

7条回答
  •  再見小時候
    2020-12-02 21:09

    Here is the code below .Use it in your activities it works fine.

    public class MainActivity extends AppCompatActivity {
    
        TextView textview;
        final static long INTERVAL = 1000;
        final static long TIMEOUT = 11000;
        static long millisecondsleft;
        boolean isPause =false;
    
        CountDownTimer countDownTimer;
        CountDownTimer countDownTimeronResume;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            textview=findViewById(R.id.textviewcheck);
     }
    
        @Override
        protected void onResume() {
            super.onResume();
    
           if(isPause == false) {
               countDownTimer = new CountDownTimer(TIMEOUT, INTERVAL) {
                   @Override
                   public void onTick(long millisUntilFinished) {
                       millisecondsleft = millisUntilFinished;
                       textview.setText(":" + String.format("%02d", millisUntilFinished / 1000));
                   }
    
                   @Override
                   public void onFinish() {
    
                       textview.setText("DONE!");
                   }
               }.start();
    
           } else{
                         countDownTimeronResume = new CountDownTimer(millisecondsleft, INTERVAL) {
                           @Override
                           public void onTick(long millisUntilFinished) {
                               Toast.makeText(MainActivity.this, "ONPAUSED", Toast.LENGTH_SHORT).show();
                               millisecondsleft = millisUntilFinished;
                               textview.setText(":" + String.format("%02d", millisUntilFinished / 1000));
                           }
    
                           @Override
                           public void onFinish() {
                               textview.setText("DONE!");
    
                           }
                       }.start();
             }
    
    
        }
    
        @Override
        protected void onPause() {
            super.onPause();
    
            if(countDownTimer!=null){
                countDownTimer.cancel();
                isPause = true;
            }
           if(countDownTimeronResume!=null){
                countDownTimeronResume.cancel();
           }
        }
    }
    

提交回复
热议问题