关于 c#:xamarin.forms 中的页面生命周期事件

Page lifecycle events in xamarin.forms

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

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

我知道这两个:

1
2
3
4
5
6
7
protected override void OnAppearing()
{
}

protected override void OnDisappearing()
{
}

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

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

谢谢。


因此,当您的页面出现时会触发 OnAppearing 事件。 IE。您已导航到该页面或从堆栈中的另一个页面返回该页面。您可以从 API 文档中看到当前没有 Page Lifecycle 事件

我认为你在谈论的是如果你让你的应用程序进入睡眠状态并导航回它, OnAppearing 事件不会被触发,这是因为你的页面没有出现,因为它已经在那里,应用程序刚刚睡着了。

您正在寻找的是 App Lifecycle ,其中包括以下方法:

1
2
3
4
5
6
7
8
9
10
11
12
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 并且还必须对 AppDelegateMainActivity 进行更改。


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

我对同一件事感到沮丧:在 Xamarin.Forms 中没有一致的视图生命周期事件。但是您可以通过使用 MessagingCenter 来解决其中的一些限制,它只是一个简单的发布/订阅消息传递工具。