網站首頁 編程語言 正文
前言
管理應用生命周期事件是開發應用程序時最常見的要求之一。同樣,有必要在跨平臺應用程序(如 .NET MAUI應用)中處理應用生命周期,以提高其效率。
在這篇博客中,我將通過代碼示例分享如何在 .NET MAUI 應用中配置應用生命周期事件。
應用程序生命周期
通常,應用具有不同的生命周期或狀態。.NET MAUI 應用具有以下四個生命周期(執行狀態):
- 運行 (Running)
- 未運行 (Not running)
- 關閉 (Deactivated)
- 停止 (Stopped)
當窗口移動到每個狀態時,將觸發不同的事件。
跨平臺生命周期
以下是跨平臺應用中提供的一些預定義生命周期事件:
- Created: 應用從未運行狀態移動到正在運行狀態時發生。通常,當我們啟動新窗口時。
- Activated: 當窗口從未聚焦狀態移動到聚焦狀態(未聚焦 = 位于另一個窗口后面)時發生。
- Deactivated: 當窗口移動到未聚焦狀態時發生。
- Stopped: 在窗口變為隱藏時發生。例如,當我們將其最小化時。這樣,窗口就有可能被破壞。
- Resumed: 已停止事件的后續事件,但與創建的事件不同。
- Destroying: 在窗口被銷毀和解除分配時發生。
下面是映射圖,其中說明了 .NET MAUI 框架將如何映射本機事件。
如何配置生命周期事件
使用 .NET MAUI Preview 13,您可以使用 MauiAppBuilder 和 ConfigureLifecycleEvents 擴展方法輕松地在 MauiProgram 類中配置生命周期事件。此方法在 Microsoft.Maui.LifecycleEvents 命名空間中可用。
有關常見配置,請參閱以下代碼示例。
using Microsoft.Maui.LifecycleEvents; namespace MauiApp1; public static class MauiProgram { public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }).ConfigureLifecycleEvents(app => { //Code... }); return builder.Build(); } }
特定于平臺的生命周期事件
您還可以為自定義設置引發特定于平臺的事件。下面列舉了每個平臺的特定事件(可用):
Android
目前,有以下 21 個特定于 Android 平臺的事件可用:
- OnActivityResult
- OnApplicationConfigurationChanged
- OnApplicationCreate
- OnApplicationCreating
- OnApplicationLowMemory
- OnApplicationTrimMemory
- OnBackPressed
- OnConfigurationChanged
- OnCreate
- OnDestroy
- OnNewIntent
- OnPause
- OnPostCreate
- OnPostResume
- OnRequestPermissionsResult
- OnRestart
- OnRestoreInstanceState
- OnResume
- OnSaveInstanceState
- OnStart
- OnStop
您可以使用編譯器指令通過 AddAndroid() 擴展方法調用特定于 Android 平臺的事件。
請參閱下面的代碼示例。在這里,我們將調用?OnBackPressed
事件以移動到上一個目標。?
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }).ConfigureLifecycleEvents(AppLifecycle => { #if ANDROID AppLifecycle.AddAndroid(android => android .OnBackPressed((activity) => BackPressed())); #endif }); return builder.Build(); } static bool BackPressed() { return true; }
IOS
目前,有以下 10 個特定于 iOS 平臺的事件可用:
- ContinueUserActivity
- DidEnterBackground
- FinishedLaunching
- OnActivated
- OnResignActivation
- OpenUrl
- PerformActionForShortcutItem
- WillEnterForeground
- WillFinishLaunching
- WillTerminate
您可以使用編譯器指令通過 AddiOS() 擴展方法調用特定于 iOS 平臺的事件。
請參閱下面的代碼示例。在這里,我們將調用 WillEnterForeground
事件,該事件將在應用處于焦點模式時引發。
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder.UseMauiApp<App>() builder.ConfigureLifecycleEvents(AppLifecycle => { #if IOS AppLifecycle.AddiOS(ios => ios .WillEnterForeground((app) => EnteredForeground()) ); #endif }); return builder.Build(); } static void EnterForeground() { }
Windows
目前,以下 8 個特定于 Windows 平臺的事件可用:
- OnActivated
- OnClosed
- OnLaunched
- OnLaunching
- OnNativeMessage
- OnResumed
- OnVisibilityChanged
- OnWindowCreated
您可以使用編譯器指令通過 AddWindows() 擴展方法來調用特定于 Windows 平臺的事件。
請參閱下面的代碼示例。在這里,我們將調用 OnNativeMessage
事件來訪問應用程序實例并刪除標題欄。
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder.UseMauiApp<App>() builder.ConfigureLifecycleEvents(AppLifecycle => { #if WINDOWS AppLifecycle .AddWindows(windows => windows.OnNativeMessage((app, args) => { app.ExtendsContentIntoTitleBar = false; })); #endif }); return builder.Build(); }
關于不同平臺的生命周期事件定義位置: Core > LifecycleEvents
參考
有關更多詳細信息,請參閱?.NET MAUI 應用程序生命周期事件文檔。
原文鏈接:https://www.cnblogs.com/zh7791/p/15992947.html
相關推薦
- 2022-06-02 解決Spring Boot數據庫多數據源配置報jdbcUrl is required with dr
- 2022-05-22 Nginx服務LNMP之WordPress部署流程步驟_nginx
- 2022-09-25 Linux安裝Nginx詳細教程
- 2022-09-21 Android開發之AAR文件的生成與使用步驟_Android
- 2022-08-11 C#中的composite模式示例詳解_C#教程
- 2023-04-07 解決jest處理es模塊示例詳解_React
- 2022-05-08 Python函數命名空間和作用域(Local與Global)_python
- 2023-12-18 Path環境變量點編輯無法展開
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支