Android: CountDownTimer skips last onTick()!

前端 未结 12 698
眼角桃花
眼角桃花 2020-11-27 14:51

Code:

public class SMH extends Activity {  

    public void onCreate(Bundle b) {  
        super.onCreate(b);  
        setContentView(R.layou         


        
12条回答
  •  猫巷女王i
    2020-11-27 15:11

    To expand on Nantoka's answer. Here's my code to ensure the view is updated correctly:

    countDownTimer = new CountDownTimer(countDownMsec, 500) 
    {
        public void onTick(long millisUntilFinished)
        {
            if(millisUntilFinished!=countDownMsec)
            {
                completedTick+=1;
                if(completedTick%2==0)      // 1 second has passed
                {
                    // UPDATE VIEW HERE based on "seconds = completedTick/2"
                }
                countDownMsec = millisUntilFinished;  // store in case of pause
            }
        }
    
        public void onFinish()
        {
            countDownMsec = 0;
            completedTick+=2;       // the final 2 ticks arrive together
            countDownTimer = null;
    
            // FINAL UPDATE TO VIEW HERE based on seconds = completedTick/2 == countDownMsec/1000
        }
    }
    

提交回复
热议问题