none
Duda sobre cerrar una app Windows RT RRS feed

  • Pregunta

  • Hola,

    Necesito hacer una acción antes de cerrar de forma consiente una aplicación Windows RT

    protected override void SaveState(Dictionary<String, Object> pageState)

    En este método he realizado la acción pero no funciona como deseo. La razón es por que ocurre la acción cuando esta suspendida la aplicación y yo solo quería que actuara únicamente cuando se cierra definitivamente.

    Alguien me puede sugerir el método adecuado para que haga la acción únicamente en el cierro y no en el cierre y suspensión.

    Gracias.


    Heimdal

    domingo, 17 de febrero de 2013 18:00

Respuestas

  • No puedes hacer eso que deseas debido a la forma en que trabaja el ciclo de vida de las apps, la único que puedes hacer es que cuando el usuario vuelva a iniciar, verifiques si fue el usuario quien termino la aplicación y realizar una acción, en la mayoría de las situaciones daría igual realizar la acción antes de cerrar o después de iniciar, dado que no se puede cancelar el cierre y en otros caso puedes preguntarle cuando inicie la App si desea cancelar/guardar lo que hizo en su visita anterior.

    Te dejo la documentación donde puedes aprender sobre el ciclo de vida y donde viene explicado lo que preguntas en el tema de "Cierre de la aplicación"

    http://msdn.microsoft.com/es-MX/library/windows/apps/hh464925.aspx

    • Marcado como respuesta appmobiles.tk martes, 19 de febrero de 2013 8:16
    lunes, 18 de febrero de 2013 2:48
  • ¿Puedes especificar mas como funcionan y de que tipo son tus notificaciones?

    Y también me surge una duda

    ¿Porqué si el usuario no cancelo las notificaciones deben dejar de llegarle cuando el cierra la app?

    Una alternativa que se me ocurre así con la información que diste es eliminar las notificaciones como lo estabas haciendo protected override void SaveState(Dictionary<String, Object> pageState)  y no dejar que la aplicación se suspenda mientras haya notificaciones por mostrar, algo como lo que menciona al final http://msdn.microsoft.com/es-MX/library/windows/apps/hh465115.aspx

    • Marcado como respuesta appmobiles.tk martes, 19 de febrero de 2013 8:16
    martes, 19 de febrero de 2013 1:06

Todas las respuestas

  • No puedes hacer eso que deseas debido a la forma en que trabaja el ciclo de vida de las apps, la único que puedes hacer es que cuando el usuario vuelva a iniciar, verifiques si fue el usuario quien termino la aplicación y realizar una acción, en la mayoría de las situaciones daría igual realizar la acción antes de cerrar o después de iniciar, dado que no se puede cancelar el cierre y en otros caso puedes preguntarle cuando inicie la App si desea cancelar/guardar lo que hizo en su visita anterior.

    Te dejo la documentación donde puedes aprender sobre el ciclo de vida y donde viene explicado lo que preguntas en el tema de "Cierre de la aplicación"

    http://msdn.microsoft.com/es-MX/library/windows/apps/hh464925.aspx

    • Marcado como respuesta appmobiles.tk martes, 19 de febrero de 2013 8:16
    lunes, 18 de febrero de 2013 2:48
  • Gracias, HJR046

    Tienes toda la razón lo ví anoche justo antes de contestarme. Pero aunque ví documentación al respecto no se aplicarla. Me explico.

    Yo mando una notificación programada del sistema y esta no va a parar hasta que llegue el horario previsto. Y por lógica el usuario puede cerrar la aplicación mediante Ctrl + F4 sin más, cuando antes debería eliminar esta notificación desde la aplicación en la cual existe un botón para ello.

    Si esto ocurre la única manera de quitar la notificación es cuando la aplicación detecta "ClosedByUser"

    Pues teniendo en cuenta esto donde puedo aplicar la eliminación de la notificación teniendo en cuenta que el usuario no elimina manualmente desde dentro de la aplicación y por contra cierra consientemente la aplicación dejando una notificación que acturaría si o si.

    ¿Donde aplico un if con el chequeo de "AplicationExecutionState" para mi caso?.

    Gracias.


    Heimdal

    lunes, 18 de febrero de 2013 9:09
  • ¿Puedes especificar mas como funcionan y de que tipo son tus notificaciones?

    Y también me surge una duda

    ¿Porqué si el usuario no cancelo las notificaciones deben dejar de llegarle cuando el cierra la app?

    Una alternativa que se me ocurre así con la información que diste es eliminar las notificaciones como lo estabas haciendo protected override void SaveState(Dictionary<String, Object> pageState)  y no dejar que la aplicación se suspenda mientras haya notificaciones por mostrar, algo como lo que menciona al final http://msdn.microsoft.com/es-MX/library/windows/apps/hh465115.aspx

    • Marcado como respuesta appmobiles.tk martes, 19 de febrero de 2013 8:16
    martes, 19 de febrero de 2013 1:06
  • Mi tipo de notificación es ScheduledToastNotification es de tipo sistema y notificará justo a la hora acordada.

    Tu primer análisis me ha gustado mucho. ¿Por que no dejar la notificación cuando el usuario cierra?, tienes toda la razón así el usuario libera recursos y a lo mejor es un usuario avanzado que lo hizo conscientemente, me parece del todo lógico. Gracias.

    Con respecto a la segunda opción que me das, me gusta mucho menos.

    Con lo cual me quedo con tu primera lógica pues para mi al final es genial. Gracias.

    Me ha encantado poder conversar aquí contigo es un placer y estoy verdaderamente agradecido.

    Saludos. 


    Heimdal

    martes, 19 de febrero de 2013 8:21