好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

在.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<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 应用程序生命周期事件文档 。

到此这篇关于在.NET MAUI应用中配置应用生命周期事件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

查看更多关于在.NET MAUI应用中配置应用生命周期事件的详细内容...

  阅读:47次