wake-up-neo.com

Ereignisse im Seitenlebenszyklus in xamarin.forms

Ich habe gerade meine erste xamarin.forms-App entwickelt. Ich freue mich auf xamarin.forms, aber ich vermisse einige Events.

Gibt es in einer ContentPage von xamarin.forms Ereignisse zum Seitenlebenszyklus?

Ich kenne diese beiden:

protected override void OnAppearing()
{
}

protected override void OnDisappearing()
{
}

Das Ereignis OnAppearing () wird jedoch nur einmal ausgelöst. Wenn ich unter Android die Starttaste drücke und zu meiner App zurückkehre, wird dieses Ereignis nicht erneut ausgelöst.

Gibt es eine Problemumgehung dafür (wie OnNavigatedTo in WindowsPhone-Seiten)?

Vielen Dank.

27
Joehl

Das Ereignis OnAppearing wird ausgelöst, wenn Ihre Seite angezeigt wird. Das heißt Sie haben zu dieser Seite navigiert oder sind von einer anderen Seite im Stapel zu dieser Seite zurückgekehrt. Derzeit gibt es keine Page Lifecycle - Ereignisse, wie Sie der API-Dokumentation entnehmen können.

Ich denke, Sie sprechen davon, wenn Sie Ihre Anwendung in den Ruhezustand versetzen und wieder hinein navigieren und das Ereignis OnAppearing nicht ausgelöst wird. Dies liegt daran, dass Ihre Seite nicht angezeigt wurde, weil sie bereits vorhanden war und die Anwendung vorhanden war gerade eingeschlafen.

Was Sie suchen, ist der App Lifecycle , der Methoden enthält wie:

protected override void OnStart()
{
    Debug.WriteLine ("OnStart");
}
protected override void OnSleep()
{
    Debug.WriteLine ("OnSleep");
}
protected override void OnResume()
{
    Debug.WriteLine ("OnResume");
}

Sie können dann das Ereignis OnResume verwenden, um das zu tun, wonach Sie suchen.

Dieses Xamarin-Dokument enthält die Änderungen, die an alten Xamarin-Projekten vorgenommen werden müssen, um auf diese Ereignisse zuzugreifen. z.B. Ihre Klasse App in Ihrer gemeinsam genutzten Bibliothek muss von Xamarin.Forms.Application erben, und Änderungen müssen auch an den Klassen AppDelegate und MainActivity vorgenommen werden.

27
user1

Sie können auch das MessagingCenter von Xamarin verwenden, um Ereignisse willkürlich zu koordinieren: http://developer.xamarin.com/guides/cross-platform/xamarin-forms/messaging-center/

Dasselbe hat mich frustriert: Ich habe keine konsistenten Lebenszyklusereignisse in Xamarin.Forms gesehen . Sie können jedoch einige dieser Einschränkungen umgehen, indem Sie das MessagingCenter verwenden, bei dem es sich lediglich um eine einfache Pub-/Sub-Messaging-Funktion handelt.

9
NovaJoe

Das funktioniert für mich. Xamarin.Forms 2.0 und höher. Immer wenn Sie zu dieser Seite CP zurückkehren, wird das Ereignis Appearing ausgelöst.

    public CP:ContentPage
    {
        //....
        public CP()
        {
            this.Appearing += CP_Appearing ;
            //...
        }

        private void CP_Appearing(object sender, EventArgs e)
        {
            Debug.WriteLine("*************HALLO******WELCOME BACK.");
        }
    }
5
elliotching