溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

在.NET?MAUI應(yīng)用中怎么配置應(yīng)用生命周期事件

發(fā)布時間:2022-03-28 13:55:03 來源:億速云 閱讀:230 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了在.NET MAUI應(yīng)用中怎么配置應(yīng)用生命周期事件,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

應(yīng)用程序生命周期

通常,應(yīng)用具有不同的生命周期或狀態(tài)。.NET MAUI 應(yīng)用具有以下四個生命周期(執(zhí)行狀態(tài)):

  • 運行 (Running)

  • 未運行 (Not running)

  • 關(guān)閉 (Deactivated)

  • 停止 (Stopped)

當窗口移動到每個狀態(tài)時,將觸發(fā)不同的事件。

跨平臺生命周期

以下是跨平臺應(yīng)用中提供的一些預定義生命周期事件:

  • Created: 應(yīng)用從未運行狀態(tài)移動到正在運行狀態(tài)時發(fā)生。通常,當我們啟動新窗口時。

  • Activated: 當窗口從未聚焦狀態(tài)移動到聚焦狀態(tài)(未聚焦 = 位于另一個窗口后面)時發(fā)生。

  • Deactivated: 當窗口移動到未聚焦狀態(tài)時發(fā)生。

  • Stopped: 在窗口變?yōu)殡[藏時發(fā)生。例如,當我們將其最小化時。這樣,窗口就有可能被破壞。

  • Resumed: 已停止事件的后續(xù)事件,但與創(chuàng)建的事件不同。

  • Destroying: 在窗口被銷毀和解除分配時發(fā)生。

下面是映射圖,其中說明了 .NET MAUI 框架將如何映射本機事件。

在.NET?MAUI應(yīng)用中怎么配置應(yīng)用生命周期事件

如何配置生命周期事件

使用 .NET MAUI Preview 13,您可以使用 MauiAppBuilder 和 ConfigureLifecycleEvents 擴展方法輕松地在 MauiProgram 類中配置生命周期事件。此方法在 Microsoft.Maui.LifecycleEvents 命名空間中可用。

有關(guān)常見配置,請參閱以下代碼示例。

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();
    }
}

特定于平臺的生命周期事件

您還可以為自定義設(shè)置引發(fā)特定于平臺的事件。下面列舉了每個平臺的特定事件(可用):

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() 擴展方法調(diào)用特定于 Android 平臺的事件。
請參閱下面的代碼示例。在這里,我們將調(diào)用 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() 擴展方法調(diào)用特定于 iOS 平臺的事件。
請參閱下面的代碼示例。在這里,我們將調(diào)用 WillEnterForeground 事件,該事件將在應(yīng)用處于焦點模式時引發(fā)。

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() 擴展方法來調(diào)用特定于 Windows 平臺的事件。
請參閱下面的代碼示例。在這里,我們將調(diào)用 OnNativeMessage 事件來訪問應(yīng)用程序?qū)嵗h除標題欄。

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();
}

關(guān)于不同平臺的生命周期事件定義位置: Core > LifecycleEvents

在.NET?MAUI應(yīng)用中怎么配置應(yīng)用生命周期事件

感謝你能夠認真閱讀完這篇文章,希望小編分享的“在.NET MAUI應(yīng)用中怎么配置應(yīng)用生命周期事件”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI