Xamarin.Forms App Lifecycle
The Application
base class provides the following features:
- Lifecycle methods
OnStart
,OnSleep
, andOnResume
. - Page navigation events
PageAppearing
,PageDisappearing
. - Modal navigation events
ModalPushing
,ModalPushed
,ModalPopping
, andModalPopped
.
Lifecycle methods
The Application
class contains three virtual methods that can be overridden to respond to lifecycle changes:
OnStart
- called when the application starts.OnSleep
- called each time the application goes to the background.OnResume
- called when the application is resumed, after being sent to the background.
Note
There is no method for application termination. Under normal circumstances (i.e. not a crash) application termination will happen from the OnSleep state, without any additional notifications to your code.
To observe when these methods are called, implement a WriteLine
call in each (as shown below) and test on each platform.
protected override void OnStart()
{
Debug.WriteLine ("OnStart");
}
protected override void OnSleep()
{
Debug.WriteLine ("OnSleep");
}
protected override void OnResume()
{
Debug.WriteLine ("OnResume");
}
Important
On Android, the OnStart
method will be called on rotation as well as when the application first starts, if the main activity lacks ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation
in the [Activity()]
attribute.
Page navigation events
There are two events on the Application
class that provide notification of pages appearing and disappearing:
PageAppearing
- raised when a page is about to appear on the screen.PageDisappearing
- raised when a page is about to disappear from the screen.
These events can be used in scenarios where you want to track pages as they appear on screen.
Note
The PageAppearing
and PageDisappearing
events are raised from the Page
base class immediately after the Page.Appearing
and Page.Disappearing
events, respectively.
Modal navigation events
There are four events on the Application
class, each with their own event arguments, that let you respond to modal pages being shown and dismissed:
ModalPushing
- raised when a page is modally pushed.ModalPushed
- raised after a page has been pushed modally.ModalPopping
- raised when a page is modally popped.ModalPopped
- raised after a page has been popped modally.
Note
The ModalPopping
event arguments, of type ModalPoppingEventArgs
, contain a Cancel
property. When Cancel
is set to true
the modal pop is cancelled.