[英]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
事件。 即您已導航到該頁面或從堆棧中的另一個頁面返回該頁面。 您可以從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
繼承,並且還必須對AppDelegate
和MainActivity
進行更改。
您還可以使用 Xamarin 的 MessagingCenter 來執行事件的任意協調:http: //developer.xamarin.com/guides/cross-platform/xamarin-forms/messaging-center/
我對同樣的事情感到沮喪:在 Xamarin.Forms 中沒有一致的視圖生命周期事件。 但是您可以通過使用 MessagingCenter 來解決其中的一些限制,它只是一個簡單的發布/訂閱消息傳遞工具。
這對我有用。 Xamarin.Forms 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.");
}
}
以第一個答案https://stackoverflow.com/a/29252552/1894630為基礎,
在 onappearing 和 ondisappearing 上設置標志,並基於它使用 onresume。 IE
內容頁.xaml.cs
protected override void OnAppearing()
{
base.OnAppearing();
App.DroidLocationPermissionAsker.AskLocationPermission();
App.Locationpagepersist = true;
}
protected override void OnDisappearing()
{
base.OnDisappearing();
App.Locationpagepersist = false;
}
應用程序.xaml.cs:
public static bool Locationpagepersist { get; internal set; }
protected override void OnResume()
{
if (Locationpagepersist)
{
DroidLocationPermissionAsker.AskLocationPermission();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.