Wenn Sie an der Quelle der Klasse chronometer anschauen, werden Sie sehen, dass es nicht die in einem Feld verstrichene Zeit speichert und berechnet sie intern es jedes Mal, muss das Display aktualisieren.
Allerdings ist es relativ einfach, das gleiche in Ihrem eigenen Code zu tun:
long elapsedMillis = SystemClock.elapsedRealtime() - chronometerInstance.getBase();
Dies setzt voraus, dass Sie Ihre Uhr so etwas wie diese begonnen haben:
chronometerInstance.setBase(SystemClock.elapsedRealtime());
chronometerInstance.start();
Hier ist ein vollständiges Beispiel:
Eine etwas verwirrende Sache über Chronometer ist, dass Sie es nicht wirklich verwenden können als Stoppuhr, die gestartet, gestoppt und erneut gestartet wird. Wenn es läuft, zeigt es immer die verstrichene Zeit an, seit Sie es zuletzt zurückgesetzt haben, egal wie oft und wie lange Sie es in der Zwischenzeit gestoppt haben. Wenn es gestoppt wird, hört es einfach auf, die Anzeige zu aktualisieren.
Wenn Sie etwas wie eine Stoppuhr benötigen, müssen Sie Chronometer Unterklasse oder vielleicht erstellen Sie Ihre eigene Version mit der source.
** Chronometer ** unterstützt jetzt 'getText()' – gnB