Pregunta

Estoy teniendo un par de problemas con una aplicación de alarma que estoy desarrollando.

La primera cosa que creo que es un poco raro es que cuando se dispara una alarma y se despierta del teléfono hacia arriba. Estas cosas acaecer.

  

alcrear
  onResume
  onPause
  onResume

¿Por qué se ejecutan en ese orden? Los dos últimos no debería ser llamado? Y esto es lo que me causa un gran problema, ya que cuando presiono el hogar o en la espalda en el teléfono, onPause se ejecuta, lo que quiero llamar acabado () desde. Y esa parte funciona como debería, pero que no funciona cuando el teléfono se despierta del sueño UPP desde dispensada de la llamada onPause ...

¿Alguna idea?

¿Fue útil?

Solución

Yo sugeriría nos fijamos en cómo la aplicación oficial de alarma controla los eventos: https://android.googlesource.com/platform/packages/apps/DeskClock

Otros consejos

También tiene un problema similar: i crear una actividad y un servicio en segundo plano. Cuando el servicio de recibir algunos datos de la red que traerá en marcha la actividad. Todo funciona bien hasta que la actividad en la fase onStop y la pantalla se queda en negro. Cuando tengo esta situación y solicito la actividad de reinicio, tengo:

onRestart onStart En resumen onPause onNewIntent onResume

Como se puede ver que tengo una onResume, onPause y otro onResume y la actividad llegó al usuario.

Parece que se debe a que utilizamos un singleTop o SingleInstance Actividad (tal vez también aparecer en singleTask). El problema es cuando se envía un Intento de un singleTop actividad ya creada, su método activo intención de que el nuevo onNewIntent (). de la API se puede ver que:

  

Siempre se suspenderá la actividad de una   antes de recibir un nuevo intento, por lo que   puede contar con onResume () se llama   después de este método.

así que tal vez esta es la razón por la recepción de llamadas onResume-onPause-onResume.

Sin embargo, este es un comportamiento extraño!

¿Realmente desea llamar acabado () en onPause ()? onPause () se llama cuando la actividad actual no está en el primer plano más. Tal vez usted quiere llamar acabado () en el método de onStop () en su lugar. Vea la Activity lifecycle para más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top