Cómo comparar el time de inactividad de MotionEvent con un reloj, ¿cuál es su base de time?

Estoy tratando de determinar el order cronológico de un MotionEvent frente a algo que sucede periódicamente en mi object UI.

private var rotateFinishTime: Long = -1 .... fun somethingHappensPeriodically() { Log.d(tag_, "show new round") ... this.rotateFinishTime = SystemClock.elapsedRealtime() } 

Tengo un GestureDetector.OnGestureListener adjunto:

  override fun onSingleTapConfirmed(gd: GestureDetector, e: MotionEvent): Boolean { // for tap: since it comes delayed, have to check event time if (e.downTime < this.rotateFinishTime || this.rotating) { Log.d(tag_, "e.downTime: $e.downTime rotateFinishTime: $rotateFinishTime downTime - rotateFinishTime: ${e.downTime - rotateFinishTime} rotating: $rotating") return true } ... do stuff } 

e.downTime: 4763800 rotateFinishTime: 18832541 downTime – rotateFinishTime: -14068741 rotating: false

Entonces, el time real transcurrido no parece ser la base del time. Obviamente, el time de época de Unix no encaja tampoco. Nota interesante: el cálculo produce los resultados "esperados" en el emulador qemu, pero no en mi dispositivo con stock Android 6.0 flasheado.

Creo que lo encontré: debería llamar a SystemClock.uptimeMillis() para hacer una comparación válida. La documentation está enterrada en InputEvent, no la recita ni la repite en MotionEvent:

/ ** * Recupera la hora en que ocurrió este evento, * en la base de time de {@link android.os.SystemClock # uptimeMillis}. * * @return Devuelve la hora en que ocurrió este evento, * en la base de time de {@link android.os.SystemClock # uptimeMillis}. * /

Obviamente, el emulador nunca se sumió en un sueño profundo.

  • El file de class Kotlin no se puede ejecutar en IntelliJ para JUnit
  • ¿Cómo pasar el token JWT de una actividad a otra?
  • datos e incompatibilidad abierta, ¿qué alternativa tengo?
  • ¿Puedes tener un constructor primario genérico en Kotlin?
  • Extensiones de Kotlin / properties sintéticas: mismo object en múltiples invocaciones de Fragment.onViewCreated ()
  • OkHttp CookieJar no puede agregar cookies para solicitar
  • Acceda al campo estático desde la superclass Java
  • Kotlin: diferencia entre el object y el object acompañante en una class