The MAUI application lifecycle involves several stages from launch to termination, with platform-specific behaviors on iOS and Android. Here's a detailed explanation of each phase:
1. Application Startup
Common MAUI Initialization
Platform Bootstrapping:
Native OS launches the executable
Platform-specific runtime initializes (Mono for Android, .NET for iOS)
MauiProgram Execution:
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder.UseMauiApp<App>(); // Configure services, fonts, etc. return builder.Build(); }
Dependency injection container configured
Application services registered
App Class Instantiation:
App.xaml.cs
constructor executesMain page set via
MainPage = new MainPage();
Platform-Specific Startup
Android:
MainActivity
(derives fromMauiAppCompatActivity
) launchesOnCreate()
called:protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // MAUI initialization happens here }
XAML handler system initializes
iOS:
UIApplicationMain
entry point executesMauiUIApplicationDelegate
methods called:[Register("AppDelegate")] public class AppDelegate : MauiUIApplicationDelegate { protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); }
Root view controller initialized
2. Page Lifecycle Events
MAUI Page Events (Cross-Platform)
NavigatingTo (called before page appears)
NavigatedTo (after page appears)
NavigatingFrom (before page disappears)
NavigatedFrom (after page disappears)
protected override void OnAppearing() { base.OnAppearing(); // Equivalent to NavigatedTo // Start animations, load data } protected override void OnDisappearing() { base.OnDisappearing(); // Equivalent to NavigatedFrom // Pause operations, save state }
3. Application State Transitions
Foreground/Background States
Common Events:
Application.Current.PageAppearing
Application.Current.PageDisappearing
Android Specifics:
Resume (
OnResume()
):App returns to foreground
MAUI triggers
OnResume
event
Pause (
OnPause()
):App going to background
MAUI triggers
OnSleep
event
iOS Specifics:
Active (
OnActivated
):App enters foreground
MAUI triggers
OnResume
Background (
DidEnterBackground
):App enters background
MAUI triggers
OnSleep
4. Detailed Lifecycle Sequence
Cold Start Scenario
Platform launches process
MauiProgram.CreateMauiApp()
executesDI container built
App
constructor runsMainPage created
Platform-specific window created
OnStart
triggered (Android only)OnAppearing
for initial pageUI becomes interactive
Background to Foreground
OS resumes app process
OnResume
triggered (cross-platform)Current page's
OnAppearing
calledUI updates resume
Foreground to Background
User navigates away from app
Current page's
OnDisappearing
calledOnSleep
triggered (cross-platform)App may enter suspended state
5. Platform-Specific Lifecycle Details
Android Lifecycle Mapping
Android Activity | MAUI Equivalent |
---|---|
OnCreate() | App constructor |
OnStart() | OnStart |
OnResume() | OnResume |
OnPause() | OnSleep |
OnStop() | (Part of Sleep) |
OnDestroy() | OnDestroy |
Key Notes:
OnSleep
combines Android'sOnPause
andOnStop
OnResume
matches Android'sOnResume
iOS Lifecycle Mapping
iOS Event | MAUI Equivalent |
---|---|
FinishedLaunching | App startup |
OnActivated | OnResume |
DidEnterBackground | OnSleep |
WillTerminate | OnDestroy |
Key Notes:
iOS uses scene-based lifecycle in modern apps
MAUI abstracts scene management
6. Lifecycle Customization
Handling Events in App.xaml.cs
public partial class App : Application { public App() { InitializeComponent(); this.Startup += OnStartup; this.Sleep += OnAppSleep; this.Resume += OnAppResume; } private void OnAppSleep(object sender, EventArgs e) { // Save state, pause network operations } private void OnAppResume(object sender, EventArgs e) { // Refresh data, restart services } }
Page-Level Management
public partial class MainPage : ContentPage { protected override void OnAppearing() { base.OnAppearing(); StartDataRefresh(); } protected override void OnDisappearing() { base.OnDisappearing(); StopDataRefresh(); } protected override void OnBindingContextChanged() { base.OnBindingContextChanged(); // Handle data context changes } }
7. Special Scenarios
State Preservation
Android: Bundle saved in
OnSaveInstanceState
iOS: State restoration methods
MAUI provides
IPersistedState
interface
Memory Pressure
Both platforms may terminate backgrounded apps
MAUI provides
MemoryManager
to monitor pressure
Multi-Window (Android)
Each window maintains separate lifecycle
Handled via
OnConfigurationChanged
8. Shutdown Sequence
Normal Termination
OnDisappearing
for current pageOnSleep
triggeredOnDestroy
(Android) orWillTerminate
(iOS)Process terminated
Abnormal Termination
Crash or force-stop bypasses normal lifecycle
MAUI provides crash reporting hooks
Understanding this complete lifecycle helps properly manage resources, maintain state, and provide smooth user experiences across all platform states.
No comments:
Post a Comment