Подтвердить что ты не робот

События жизненного цикла страницы в xamarin.forms

Я только что разработал свое первое приложение xamarin.forms. Я в восторге от xamarin.forms, но я пропускаю несколько событий.

Существуют ли какие-либо события жизненного цикла страницы в xamarin.forms ContentPage?

Я знаю об этих двух:

protected override void OnAppearing()
{
}

protected override void OnDisappearing()
{
}

Но событие OnAppearing() запускается только один раз. На Android, когда я нажимаю кнопку "Старт" и возвращаюсь в свое приложение, это событие не запускается снова.

Есть ли обходной путь для этого (например, OnNavigatedTo на страницах WindowsPhone)?

Спасибо.

4b9b3361

Ответ 1

Таким образом, событие OnAppearing запускается, когда появляется ваша страница. То есть вы перешли на эту страницу или обратно на эту страницу из другого в стеке. В настоящее время нет событий Page Lifecycle, как вы можете видеть из документации API

Я думаю, что вы говорите о том, что если вы уложите приложение в режим сна и вернетесь в него, событие OnAppearing не будет запущено, это потому, что ваша страница не появилась, потому что она уже была там, приложение было просто спит.

Что вы ищете, это App Lifecycle, который включает в себя такие методы, как:

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

Затем вы можете использовать событие OnResume, чтобы выполнить то, что вы ищете.

Этот документ Xamarin включает изменения, которые должны быть внесены в старые проекты Xamarin для доступа к этим событиям. например ваш класс App в вашей общей библиотеке должен наследовать от Xamarin.Forms.Application, а также изменения должны быть сделаны в AppDelegate и MainActivity.

Ответ 2

Вы также можете использовать Xamarin MessagingCenter для выполнения произвольной координации событий: http://developer.xamarin.com/guides/cross-platform/xamarin-forms/messaging-center/

Я был разочарован одним и тем же: не имея последовательных событий просмотра жизненного цикла в Xamarin.Forms. Но вы можете обойти некоторые из этих ограничений, используя MessagingCenter, который представляет собой просто средство обмена сообщениями/суб-сообщениями.

Ответ 3

Это работает для меня. Xamarin.Forms 2.0 и выше. Всякий раз, когда вы возвращаетесь на эту страницу CP, запускается событие Appearing.

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

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