欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2022年03月28日 11:22:52   作者:痕跡g  
本文詳細(xì)講解了在.NET?MAUI應(yīng)用中配置應(yīng)用生命周期事件的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

管理應(yīng)用生命周期事件是開發(fā)應(yīng)用程序時(shí)最常見的要求之一。同樣,有必要在跨平臺(tái)應(yīng)用程序(如 .NET MAUI應(yīng)用)中處理應(yīng)用生命周期,以提高其效率。
在這篇博客中,我將通過代碼示例分享如何在 .NET MAUI 應(yīng)用中配置應(yīng)用生命周期事件。

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

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

  • 運(yùn)行 (Running)
  • 未運(yùn)行 (Not running)
  • 關(guān)閉 (Deactivated)
  • 停止 (Stopped)

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

跨平臺(tái)生命周期

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

  • Created: 應(yīng)用從未運(yùn)行狀態(tài)移動(dòng)到正在運(yùn)行狀態(tài)時(shí)發(fā)生。通常,當(dāng)我們啟動(dòng)新窗口時(shí)。
  • Activated: 當(dāng)窗口從未聚焦?fàn)顟B(tài)移動(dòng)到聚焦?fàn)顟B(tài)(未聚焦 = 位于另一個(gè)窗口后面)時(shí)發(fā)生。
  • Deactivated: 當(dāng)窗口移動(dòng)到未聚焦?fàn)顟B(tài)時(shí)發(fā)生。
  • Stopped: 在窗口變?yōu)殡[藏時(shí)發(fā)生。例如,當(dāng)我們將其最小化時(shí)。這樣,窗口就有可能被破壞。
  • Resumed: 已停止事件的后續(xù)事件,但與創(chuàng)建的事件不同。
  • Destroying: 在窗口被銷毀和解除分配時(shí)發(fā)生。

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

如何配置生命周期事件

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

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

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

特定于平臺(tái)的生命周期事件

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

Android

目前,有以下 21 個(gè)特定于 Android 平臺(tái)的事件可用:

  • OnActivityResult
  • OnApplicationConfigurationChanged
  • OnApplicationCreate
  • OnApplicationCreating
  • OnApplicationLowMemory
  • OnApplicationTrimMemory
  • OnBackPressed
  • OnConfigurationChanged
  • OnCreate
  • OnDestroy
  • OnNewIntent
  • OnPause
  • OnPostCreate
  • OnPostResume
  • OnRequestPermissionsResult
  • OnRestart
  • OnRestoreInstanceState
  • OnResume
  • OnSaveInstanceState
  • OnStart
  • OnStop

您可以使用編譯器指令通過 AddAndroid() 擴(kuò)展方法調(diào)用特定于 Android 平臺(tái)的事件。
請(qǐng)參閱下面的代碼示例。在這里,我們將調(diào)用 OnBackPressed事件以移動(dòng)到上一個(gè)目標(biāo)。 

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 個(gè)特定于 iOS 平臺(tái)的事件可用:

  • ContinueUserActivity
  • DidEnterBackground
  • FinishedLaunching
  • OnActivated
  • OnResignActivation
  • OpenUrl
  • PerformActionForShortcutItem
  • WillEnterForeground
  • WillFinishLaunching
  • WillTerminate

您可以使用編譯器指令通過 AddiOS() 擴(kuò)展方法調(diào)用特定于 iOS 平臺(tái)的事件。
請(qǐng)參閱下面的代碼示例。在這里,我們將調(diào)用 WillEnterForeground 事件,該事件將在應(yīng)用處于焦點(diǎn)模式時(shí)引發(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 個(gè)特定于 Windows 平臺(tái)的事件可用:

  • OnActivated
  • OnClosed
  • OnLaunched
  • OnLaunching
  • OnNativeMessage
  • OnResumed
  • OnVisibilityChanged
  • OnWindowCreated

您可以使用編譯器指令通過 AddWindows() 擴(kuò)展方法來(lái)調(diào)用特定于 Windows 平臺(tái)的事件。
請(qǐng)參閱下面的代碼示例。在這里,我們將調(diào)用 OnNativeMessage 事件來(lái)訪問應(yīng)用程序?qū)嵗h除標(biāo)題欄。

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)于不同平臺(tái)的生命周期事件定義位置: Core > LifecycleEvents

參考

有關(guān)更多詳細(xì)信息,請(qǐng)參閱 .NET MAUI 應(yīng)用程序生命周期事件文檔

到此這篇關(guān)于在.NET MAUI應(yīng)用中配置應(yīng)用生命周期事件的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論