Xamarin.Formsのライフサイクルで画面の処理を行いたい
Xamarin.Formsのライフサイクルについて
画面ごとに画面開始時OnAppearingと画面終了時OnDisappearingはあるけれども
①アプリをフォアグラウンドにしたとき
②バックグラウンドにしたとき
はアプリ全体で一つのイベントとして扱われているわけで、どうしたらいいかよくわかりませんでした。
とりあえず、下記のようにしています。
下記、サンプルソースを元に記述します。
App.cs
public partial class App : Application { public static Action OnStartAction; public static Action OnSleepAction; public static Action OnResumeAction; public App() { InitializeComponent(); MainPage = new MainPage(); } protected override void OnStart() { OnStartAction?.Invoke(); } protected override void OnSleep() { OnSleepAction?.Invoke(); } protected override void OnResume() { OnResumeAction?.Invoke(); } }
画面はこう
MainPage.xaml.cs
protected override void OnAppearing() { base.OnAppearing(); //OnResume() App.OnResumeAction = () => DisplayAlert("メッセージ", "OnResume()", "OK"); } protected override void OnDisappearing() { base.OnDisappearing(); App.OnResumeAction = null; }
これでアプリがフォアグラウンドになったときメッセージダイアログを出すようにしています。