2011-11-01 14 views
10

Tengo un botón llamado Check In. Mi objetivo es hacer clic para cambiar el texto y comenzar a contar la hora. El temporizador debe detenerse en el siguiente clic. Debe dar el tiempo necesario entre los dos clics del botón.Android: para medir el tiempo entre los dos clics del botón

+0

mi duda es sobre el uso del servicio de alarma y el temporizador normal en java. – siraj

Respuesta

42

En el primer clic en Crear una variable:

long startTime = System.currentTimeMillis(); 

A continuación, en el segundo clic se puede calcular la diferencia:

long difference = System.currentTimeMillis() - startTime; 

difference/1000 le dará la diferencia en cuestión de segundos. Espero que esto ayude.

+17

Sugeriré usar 'SystemClock.elapsedRealtime()' en lugar de 'System.currentTimeMillis()'. La documentación dice: 'System.currentTimeMillis()' es el reloj de "pared" estándar que expresa milisegundos desde la época. El reloj de pared puede ser configurado por el usuario o la red del teléfono, por lo que el tiempo puede saltar hacia atrás o hacia adelante de manera impredecible. 'elapsedRealtime()' y 'elapsedRealtimeNanos()' devuelven la hora desde que se inició el sistema. Se garantiza que este reloj sea monotónico, y continúa marcando incluso cuando la CPU está en modo de ahorro de energía, por lo que es la base recomendada para la temporización de intervalo de propósito general. – vtuhtan

0

Puede usar System.currentTimeMillis() (o crear una nueva instancia Date o GregorianCalendar) al hacer clic.

Guárdalo en alguna parte. En el siguiente clic haz lo mismo. Luego compara los tiempos.

13

Creo que es una mejor práctica usar System.nanoTime() en lugar de System.currentTimeMillis(), ya que currentTimeMillis() depende de a qué hora está configurado el reloj del sistema, lo cual puede cambiarse.

nanoTime(), sin embargo, está diseñado para medir el tiempo transcurrido de acuerdo con JavaDoc.

Cuestiones relacionadas