События жизненного цикла Страницы в 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.");
}
}