c# - El evento de reanudación de la aplicación no se activa cuando la aplicación se reanuda en la aplicación de tienda WP 8.1
windows-runtime windows-phone (2)
La aplicación de mi tienda WP 8.1 se comporta de manera muy extraña. El evento de reanudación de la aplicación se activa como se espera cuando navego rápidamente y luego vuelvo. Pero si mantengo la aplicación en segundo plano durante un tiempo y cuando vuelve, la aplicación dispara los eventos Constructor y OnNavigatedTo en lugar del evento Reanudar y tiene la pantalla negra "Reanudar ..." durante unos segundos (aproximadamente 4 segundos) . Esta es una aplicación con una tarea BackgroundAudio. Incluso la aplicación de muestra BackgroundAudio de MS se comporta así. Alguien sabe lo que está mal aquí?
Estoy en el proceso de construir una aplicación WP 8.1 que también usa una tarea de audio en segundo plano. Todo lo que me explicas me pasa a mí también.
Si ve "Reanudar ..." durante unos segundos, probablemente significa que su aplicación fue cancelada por el sistema operativo después de ser suspendida primero. En este caso, el evento Reanudar no se activará porque tu aplicación se eliminó por completo y debe comenzar de nuevo. "Reanudar" generalmente significa cuando una aplicación suspendida (no terminada) reanuda la ejecución.
Cuando se finaliza su aplicación y luego se "reanuda" desde el selector de aplicaciones, su anulación del método Application.OnLaunched()
se invoca con e.PreviousExecutionState == ApplicationExecutionState.Terminated
. En este método, debe verificar si el estado de ejecución anterior fue Terminado, y si es así, restaurar la aplicación al estado en que se encontraba antes de la suspensión. Esto le da la ilusión al usuario de que la aplicación nunca se terminó y que pueden reanudar lo que estaban haciendo en ese momento.
Si crea un nuevo proyecto de Windows Phone 8.1 de Pivot App (por ejemplo), verá que los eventos del ciclo de vida de la aplicación se App.xaml.cs
correctamente en App.xaml.cs
El evento de reanudación de la aplicación se activa como se espera cuando navego rápidamente y luego vuelvo.
Este es el comportamiento correcto. Tarda unos segundos una vez que la aplicación se ha retrasado antes de que el SO la suspenda, por lo que si reanuda la aplicación antes de que el sistema operativo la haya suspendido, simplemente se reanudará desde la memoria.
No estoy seguro de por qué las aplicaciones de audio en segundo plano son más susceptibles a la terminación. Incluso me parece que la aplicación Xbox Music se comporta de manera similar. Esperemos que en la próxima versión de Windows Phone, se trate este problema.
Para su información, aquí hay un diagrama del ciclo de vida de la aplicación de MSDN (le recomiendo que lea esta página para obtener más información sobre el ciclo de vida de la aplicación):
La "reanudación" solo se produce desde los estados suspendidos a los estados en ejecución.
Cada vez que la aplicación se reanuda desde el fondo. hay dos estados en los que puede estar:
- Suspendido : se reanuda con éxito, navegando directamente a
OnNavigatedTo
; el constructor no será llamado - Terminado : la aplicación no comenzará desde el estado anterior de la página que dejó, sino que cargará esa página de nuevo; en este momento, debe haber guardado el estado mientras la aplicación se estaba suspendiendo, para restaurarlo ahora