最初のxamarin.formsアプリを開発しました。私はxamarin.formsに興奮していますが、いくつかのイベントを見逃しています。
Xamarin.forms ContentPageにpage-lifecycle-eventsがありますか?
次の2つを知っています。
protected override void OnAppearing()
{
}
protected override void OnDisappearing()
{
}
ただし、OnAppearing()イベントは1回しか発生しません。 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に一貫したviewライフサイクルイベントがないという同じことにイライラしています。ただし、MessagingCenterを使用することで、これらの制約の一部を回避できます。MessagingCenterは、単純なpub/subメッセージング機能です。
これは私のために働いています。 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.");
}
}