6

He encontrado que en las aplicaciones de Windows 8, siempre se llama al constructor de una página cuando navega de regreso a esta página, sin embargo, este no es el caso en las aplicaciones de Windows Phone 7 .El constructor de páginas vuelve a llamar cuando navega en Windows 8 C# App

Debido a este comportamiento, todas las propiedades de esa página se pierden y es necesario almacenarlas de alguna manera y reasignarlas después de que se reactive la página. Por el momento estoy usando el método SaveState para guardar los datos y reasignar los datos en el método LoadState. Ambos métodos están incorporados en la aplicación Grid/Split de ejemplo.

Me pregunto por qué está diseñado de esta manera y si hay alguna forma mejor de mantener la instancia de la página?

+1

+1 para llamar a esto. Me pilló desprevenido. Es un cambio importante y significa repensar por completo su estado y el ciclo de vida de la VM. –

Respuesta

5

Puede establecer Page.NavigationCacheMode = NavigationCacheMode.Required para cada página que desee mantener en la memoria, pero tenga en cuenta que debe asegurarse de que los usuarios no puedan navegar por estas páginas sin parar, ya que se perdería la memoria.

+0

Gracias! ¿Me pregunto por qué habría algún problema de memoria? ¿Hay alguna mejor práctica para eso? –

+0

Bueno, si mantiene páginas en la memoria, la memoria que retiene una página no se liberará hasta que elimine la página de las pilas hacia atrás y adelante. Si asigna cantidades significativas de memoria, puede hacer eso en OnNavigatedTo y liberarlo en OnNavigatedFrom, pero supongo que la mejor manera es dejarlo como está sin caché de instancias de página. –

+0

Gracias, lo probaré. –

Cuestiones relacionadas