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

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

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

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

protected override void OnAppearing()
{
}

protected override void OnDisappearing()
{
}

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

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

спасибо.

3 ответов


так 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.


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

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


это работает для меня. В Xamarin.Формы 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.");
        }
    }