квин:
У меня есть хронометр миллисекунды, который работает отлично. Код кнопки:
btnStart.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
startTime = SystemClock.uptimeMillis();
customHandler.postDelayed(updateTimerThread,0);
txtCheck.setText("");
}
});
Runnable:
Runnable updateTimerThread = new Runnable() {
@Override
public void run() {
timeMilliSeconds = SystemClock.uptimeMillis()-startTime;
updateTime = timeSwapBuff+timeMilliSeconds;
secs = (int)(updateTime/1000);
mins = (int)(secs/60);
secs %=60;
milliseconds = (int)(updateTime%1000);
txtChrono.setText(""+mins+":"+String.format("%2d",secs)+":"
+String.format("%3d",milliseconds));
customHandler.postDelayed(this,0);
check(secs, milliseconds)
}
};
Функция, чтобы проверить, соответствует времени:
public void check(Integer secs, long milli){
if (secs.equals(45) && milli.equals(367)){
txtCheck.setText("done");
}
}
Мне нужно, чтобы проверить время, чтобы начать мероприятие. Время я должен проверить в seconds.milliseconds (т.е. 45.367), но эта функция (проверка) не работает. Любая идея?
«Проверить» функция работает ... но только один из пяти раз: может быть, время освежающий слишком низко? Кроме того, код в фрагменте: оно оказывает никакого влияния на таймер?
nulldroid:
Вполне вероятно , что ваши расчеты займет больше времени , чем на 1 миллисекунду. Вы не должны проверить , что часто. Это дорого и не безопасно. Почему бы не использовать CountdownTimer ? Это делает работу , и это основано на миллисекунды.
private long[] checkTimes = new long[]{ 45367L,90446L,25384L};
for (int i = 0; i < checkTimes.length; i++) {
new CountDownTimer(checkTimes[i], 1000) {
public void onTick(long millisUntilFinished) {
txtCheck.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
txtCheck.setText("done");
}
}.start();
}