Я пытаюсь создать некоторые события, основанные на времени, используя хронометр. В приведенном ниже коде успешно отображается тост после 5 секунд запуска хронометра, но мне нужно, чтобы тост отображался в 5/10/20 секунд.if statement using onchronometerticklistener
Я пробовал использовать if (elapsedTime == 5000 || elapsedTime == 10000), но при использовании == не отображается тост.
Любые идеи?
Chronometer.OnChronometerTickListener mChronoListener = new OnChronometerTickListener() { // listens to journey timer to initiate time based events
public void onChronometerTick(Chronometer arg0) {
long elapsedTime = SystemClock.elapsedRealtime() - arg0.getBase();
if (elapsedTime > 5000)
{
Toast.makeText(SafeDrive3Activity.this, "HOUR PASSED", Toast.LENGTH_LONG).show();
}
}
};
Это кажется маловероятным, что ваш 'elapsedTime' будет точно делится на 1000 миллисекунд, основываясь на том, что устройство, которое может ввести задержку при вызове 'onChronometerTick (...)'. Другими словами, прошедшее время может составлять 5001 мс или 5020 мс в зависимости от других обстоятельств, задерживающих вызов слушателя. Использование '==' для точного значения не будет работать в этом случае - разделите на 1000, затем сравните с помощью '== 5' или' == 10'. Еще лучше, разделите на 1000, затем посмотрите, будет ли результат точно делиться на 5 или 10 с использованием модуля ('' '' '' 'оператора ''). – Squonk
Вы правы, спасибо! – Rob