您现在的位置是:网站首页> 编程资料编程资料
在.NET MAUI应用中配置应用生命周期事件_实用技巧_
                    
                
                2023-05-24
                426人已围观
            
简介 在.NET MAUI应用中配置应用生命周期事件_实用技巧_
前言
管理应用生命周期事件是开发应用程序时最常见的要求之一。同样,有必要在跨平台应用程序(如 .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() .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() .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() 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() builder.ConfigureLifecycleEvents(AppLifecycle => { #if WINDOWS AppLifecycle .AddWindows(windows => windows.OnNativeMessage((app, args) => { app.ExtendsContentIntoTitleBar = false; })); #endif }); return builder.Build(); } 关于不同平台的生命周期事件定义位置: Core > LifecycleEvents
参考
有关更多详细信息,请参阅 .NET MAUI 应用程序生命周期事件文档。
到此这篇关于在.NET MAUI应用中配置应用生命周期事件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- .Net结合JS实现URL编码与解码_实用技巧_
 - ASP.NET Core使用NLog记录日志_实用技巧_
 - Linux上使用Docker部署ASP.NET Core应用程序_实用技巧_
 - MVC使用MvcPager实现分页效果_实用技巧_
 - ASP.NET Core在WebApi项目中使用Cookie_实用技巧_
 - ASP.NET Core全局异常处理_实用技巧_
 - .NET Core中的HttpClientFactory类用法详解_实用技巧_
 - .NET Core通过dotnet publish命令发布应用_实用技巧_
 - .NET中的字符串驻留池介绍_基础应用_
 - ASP.NET Core使用HttpClient调用WebService_实用技巧_
 


                                
                                                        
                                
                                                        
                                
                                                        
    