좌절 게시물 ....android CountDownTimer - 마지막 onTick이 호출되지 않았습니다. 사용할 깨끗한 솔루션은 무엇입니까?
나는 단지 "CountDownTimer - last onTick not called"문제에 대해 많은 사람들이보고 한 바 있습니다.
문제package com.example.gosh;
import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
public class CountDownTimerSucksActivity extends Activity {
int iDontWantThis = 0; // choose 100 and it works yet ...
private static final String TAG = "CountDownTimerSucksActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new MyCountDownTimer(10000 + iDontWantThis , 1000).start();
}
class MyCountDownTimer extends CountDownTimer {
long startSec;
public MyCountDownTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
// TODO Auto-generated constructor stub
startSec = System.currentTimeMillis() ;
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
Log.e(TAG, " onFinish (" + getSeconds() + ")");
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
Log.e(TAG, millisUntilFinished + " millisUntilFinished" + " (" + getSeconds() + ")");
}
protected long getSeconds() {
return (((System.currentTimeMillis() - startSec)/1000) % 60);
}
}
}
테스트 실행에서 로그 캣 출력을 보여주는
간단한 데모 ...
당신이 onTick이 1963ms millisUntilFinished으로 일어나고있는 마지막 호출을 볼 수 있듯이, 다음 다음 호출은 거의 2 초 후에 onFinished됩니다. 확실하게 버그 투성이의 행동. 나는 이것에 대한 많은 게시물을 아직 찾지 못했다. 하나는 내가 소스 코드에 포함 된 경우, 100으로 iDontWantThis 필드를 설정하면 작동합니다.
사소한 필드에서 해결 방법을 신경 쓰지는 않지만 아직 핵심 기능이 없어서 아직 해결되지 않았다고 생각합니다. 이것에 대한 깨끗한 해결책을 얻기 위해 사람들은 무엇을하고 있습니까?
덕분에 많은
마틴은
는UPDATE :는
인해 내부 MS 지연에 마지막 틱을 surpresses하지 않는 샘으로 CountDownTimer의 매우 유용한 수정 축적을 방지 시간에 따른 각 틱의 ms 지연 시간은 찾을 수 있습니다. here
고마워, 안드로이드 아주 새로운 사실 그런 경우 소스 코드를 조사 할 수있는 단계를 만들어를 havent. 저를 가리켜 주셔서 감사합니다. 나는 millisUntilFinished> 0이면 항상 onTick을 호출하고, 나머지 millis는 내가 원하는 것을 허용하는지 쉽게 확인할 수있는 제안 된대로 내 자신의 CountDownTimer를 구현할 것이다 (실제로 나는 6,5,4,3,2를 표시하는 카운트 다운 타이머가 필요하다. , 1,0) – dorjeduck
완전성을 위해 블록에 남은 밀리 초가있을 때마다 onTick이 호출되도록하려면 다음을 제거하십시오. ------------------- -------------------------------------------} else if (millisLeft
dorjeduck