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

Page lifecycle events in xamarin.forms

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

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

我知道这两个:

protected override void OnAppearing()
{
}

protected override void OnDisappearing()
{
}

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

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

谢谢。


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

我认为你在谈论的是如果你让你的应用程序进入睡眠状态并导航回它, 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 并且还必须对 AppDelegateMainActivity 进行更改。

相关讨论

  • 我以为我可以使用其他一些事件..但现在我可以解决问题了。感谢您的快速答复。
  • 何时调用 OnSleep?

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

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

相关讨论

  • 我之前使用过 MessagingCenter,但我从来没有想过将它用于此目的。很好的解决方法,谢谢。
  • 我还遇到了 Xamarin Android 和 UWP 的不一致事件周期。我有一个第一个标签页,它使用父页的 CurrentPage 来触发第二个标签页的 Appearing 事件。在 Android 上,第一个选项卡始终可以触发 Appearing 事件,但是,在 UWP 上,并非总是如此。不一致的问题由 MessagingCenter 解决。谢谢!
  • 谢谢,这个答案帮助我解决了页面显示时缺少 OnAppearing() 方法调用的问题。我不知道为什么 Xamarin 会这样,但现在,我可以用 MessaggingCenter 解决问题。

以上是关于 c#:xamarin.forms 中的页面生命周期事件的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>