在.NET?MAUI應(yīng)用中配置應(yīng)用生命周期事件
前言
管理應(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)文章
asp.net基于JWT的web api身份驗(yàn)證及跨域調(diào)用實(shí)踐
這篇文章主要介紹了asp.net基于JWT的web api身份驗(yàn)證及跨域調(diào)用實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-07-07asp.net訪問Access數(shù)據(jù)庫(kù)溢出錯(cuò)誤
asp.net訪問Access數(shù)據(jù)庫(kù)溢出錯(cuò)誤,大家會(huì)的幫忙解決下啊。2009-07-07ASP.NET WebForm中<%=%>與<%#%>的區(qū)別
這篇文章主要介紹了ASP.NET WebForm中<%=%>與<%#%>的區(qū)別,需要的朋友可以參考下2015-01-01ASP.NET Core Kestrel 中使用 HTTPS (SSL)
這篇文章主要為大家詳細(xì)介紹了ASP.NET Core Kestrel 中使用 HTTPS(SSL)的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-09-09利用Asp.Net回調(diào)機(jī)制實(shí)現(xiàn)進(jìn)度條
本文將利用Asp.Net的回調(diào)機(jī)制使用Js實(shí)現(xiàn)一個(gè)簡(jiǎn)易進(jìn)度條2009-01-01ASP.NET Core3.1 Ocelot負(fù)載均衡的實(shí)現(xiàn)
這篇文章主要介紹了ASP.NET Core3.1 Ocelot負(fù)載均衡的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11.net jMail郵件發(fā)送(含抄送、密送、多發(fā)、日志記錄)實(shí)例代碼
這篇文章主要介紹了.net jMail郵件發(fā)送(含抄送、密送、多發(fā)、日志記錄)實(shí)例代碼,有需要的朋友可以參考一下2013-11-11asp.net中調(diào)用winrar實(shí)現(xiàn)壓縮解壓縮的代碼
asp.net壓縮解壓縮,需要服務(wù)器安裝WinRar,并且把Rar.exe拷貝到網(wǎng)站根目錄。這樣我們就可以方面的執(zhí)行壓縮解壓縮了。2008-09-09