c# - appearing - Eventos del ciclo de vida de la página en xamarin.forms
xamarin forms navigation events (3)
Acabo de desarrollar mi primera aplicación xamarin.forms. Estoy entusiasmado con xamarin.forms, pero echo de menos varios eventos.
¿Hay algún evento de ciclo de vida de página en una página de contenido de xamarin.forms?
Sé de estos dos:
protected override void OnAppearing()
{
}
protected override void OnDisappearing()
{
}
Pero el evento OnAppearing () solo se dispara una vez. En Android, cuando presiono el botón de inicio y vuelvo a mi aplicación, este evento no vuelve a activarse.
¿Existe alguna solución para esto (como OnNavigatedTo en WindowsPhone-pages)?
Gracias.
Esto es trabajo para mí. Xamarin.Forms 2.0 y superiores. Cada vez que vuelvas a esta página de CP
, se Appearing
Evento que aparece.
public CP:ContentPage
{
//....
public CP()
{
this.Appearing += CP_Appearing ;
//...
}
private void CP_Appearing(object sender, EventArgs e)
{
Debug.WriteLine("*************HALLO******WELCOME BACK.");
}
}
Por lo tanto, el evento OnAppearing
se OnAppearing
cuando aparece su página. Es decir, ha navegado a esa página o ha regresado a esa página desde otra en la Pila. Actualmente no hay eventos del Page Lifecycle
como puede ver en la documentación de la API
Creo que de lo que está hablando es si no pone su aplicación en modo de suspensión y vuelve a navegar en ella. OnAppearing
evento OnAppearing
no se OnAppearing
. Esto se debe a que su página no apareció porque ya estaba allí, la aplicación estaba simplemente dormida.
Lo que está buscando es el App Lifecycle
la App Lifecycle
que incluye métodos como:
protected override void OnStart()
{
Debug.WriteLine ("OnStart");
}
protected override void OnSleep()
{
Debug.WriteLine ("OnSleep");
}
protected override void OnResume()
{
Debug.WriteLine ("OnResume");
}
Luego puede usar el evento OnResume
para hacer lo que está buscando.
Ese Documento Xamarin incluye los cambios que se deben realizar en los proyectos antiguos de Xamarin para acceder a estos eventos. Por ejemplo, su clase de App
en su biblioteca compartida debe heredar de Xamarin.Forms.Application
y los cambios también deben realizarse en AppDelegate
y MainActivity
.
También puede usar el MessagingCenter de Xamarin para realizar una coordinación arbitraria de eventos: http://developer.xamarin.com/guides/cross-platform/xamarin-forms/messaging-center/
Me he sentido frustrado por lo mismo: no tener eventos de ciclo de vida de visualización consistentes en Xamarin.Forms. Pero puede sortear algunas de esas restricciones utilizando MessagingCenter, que es solo una sencilla instalación de publicación / subcomisión.