OnFinish() will not called at timer cancel you have to start it again, You can store time value in shared preference when application get crashed you have start time from saved time.
like
CountDownTimer countDownTimerFixed = new CountDownTimer(Time, Tick) {
@Override
public void onTick(long millisUntilFinished) {
RTSharedPrefUtils.saveStringPrefernce(RTSharedPrefUtils.KEY_DOWNLOAD_TIMER, millisUntilFinished+ "");
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
RTSharedPrefUtils.saveStringPrefernce(RTSharedPrefUtils.KEY_DOWNLOAD_TIMER, 0 + "");
this.start();
}
};
if timer is canceled,
Timer=Long.parseLong(RTSharedPrefUtils.fetchStringPrefernce(RTSharedPrefUtils.KEY_DOWNLOAD_TIMER,RTSharedPrefUtils.DEFAULT_DOWNLOAD_TIMER));
countDownTimer = new CountDownTimer(Timer, Tick) {
@Override
public void onTick(long millisUntilFinished) {
RTSharedPrefUtils.saveStringPrefernce(
RTSharedPrefUtils.KEY_DOWNLOAD_TIMER,millisUntilFinished + "");
Log.d(TAG," Normalcount:\t"+ (Long.parseLong(RTSharedPrefUtils.fetchStringPrefernce(RTSharedPrefUtils.KEY_DOWNLOAD_TIMER,RTSharedPrefUtils.DEFAULT_DOWNLOAD_TIMER)))/ 1000);
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
}
RTSharedPrefUtils.saveStringPrefernce(
RTSharedPrefUtils.KEY_DOWNLOAD_TIMER, 0 + "");
countDownTimerFixed.start();
}
};
countDownTimer.start();