Xamarin Forms Prism 在ViewModel中使用生命週期
APP使用的時候,常常可能因電話,
或者縮小背景切到其他視窗而中斷了原本APP的操作,
在Xamarin Forms中對於Page和App本身皆有提供相關的生命週期
於Application中的APP生命週期
Page上的生命週期
除了Application中的OnStart應用程式初始化這個生命週期外,
其他的生命週期在撰寫程式的時候都很常有機會需要去做處理。
在Prism下的ViewModel中,當然也可以處理這些事件,
針對App的Life Cycle與Page的Life Cycle提供了兩種不同的介面做繼承。
對於App的部分,可使用IApplicationLifecycleAware這個介面
他提供了兩種方法,分別對應到原本Application的相同名稱的方法。
OnResume:當APP從背景回到前景。
OnSleep:當APP從前景進入到背景。
Page的部分,則是提供了IPageLifecycleAware介面
與原本Page上的方法也是相對應的:
OnAppearing:當頁面出現在畫面上
OnDisappearing:當頁面從畫面上消失
因此在ViewModel中同樣是可以處理這些生命週期的。
但這裡有一點要注意,他與原生處理生命週期的狀況一樣,
如果在iOS中,將APP縮小到背景,僅只會觸發OnSleep,不會觸發Page的OnDisappearing。
但在Android上,將APP縮小到背景同時會觸發OnDisappearing與OnSleep,
同樣的從背景回到前景會觸發OnAppearing與OnResume。
在Android上的狀況
範例程式
https://github.com/stevenchang0529/Xamarin.Lab.PrismLifecycle