xamarin.forms 中的页面生命周期事件

Page lifecycle events in xamarin.forms

我刚刚开发了我的第一个 xamarin.forms 应用程序。我很兴奋 xamarin.forms,但我错过了一些活动。

xamarin.formsContentPage 中是否有任何页面生命周期事件?

我知道这两个:

protected override void OnAppearing()
{
}

protected override void OnDisappearing()
{
}

但是 OnAppearing() 事件只触发一次。在 Android,当我按下开始按钮并返回到我的应用程序时,此事件不会再次触发。

是否有解决此问题的方法(例如 WindowsPhone 页面中的 OnNavigatedTo)?

谢谢。

所以 OnAppearing 事件在您的页面出现时被触发。 IE。您已导航到该页面或从堆栈中的另一个页面返回该页面。当前没有 Page Lifecycle 事件,您可以从 API documentation

中看到

我想你说的是如果你让你的应用程序进入休眠状态并导航回它 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 class 必须继承自 Xamarin.Forms.Application 并且还必须对 AppDelegateMainActivity.

进行更改

您还可以使用 Xamarin 的 MessagingCenter 执行任意事件协调:http://developer.xamarin.com/guides/cross-platform/xamarin-forms/messaging-center/

我一直对同一件事感到沮丧:在 Xamarin.Forms 中没有一致的 view 生命周期事件。但是您可以使用 MessagingCenter 绕过其中的一些限制,它只是一个简单的 pub/sub 消息传递工具。