.NET MAUI Native Lifecycle Events

Merhabalar,

.NET MAUI ile beraber ConfigureLifecycleEvents methodu hayatımıza girdi. Temel amacı platform spesifik işlemleri platformlar özelinde geliştirmektense tek code-base yapısını bozmadan ihtiyaçlarımızı karşılayabilmek.

appBuilder
            .UseMauiApp<App>()
            .ConfigureLifecycleEvents(lifecycle => {
                #if ANDROID
                lifecycle.AddAndroid(d => {
                    d.OnBackPressed(activity => {
                        System.Diagnostics.Debug.WriteLine("Back button pressed!");
                    });
                });
                #endif
            });

Ufak bir örnek incelediğimizde, eski Xamarin geliştiriciler Shared proje yapısının kulaklarını çınlattı bile 🙂

Örnekte yapılan aslında Android için fiziksel backbutton davranışını değiştirmek. (Örnekte sadece Diagnostic’e yazıyor)

builder.ConfigureLifecycleEvents(life =>
    {
#if __ANDROID__
        Platform.Init(MauiApplication.Current);

        life.AddAndroid(android => android
            .OnRequestPermissionsResult((activity, requestCode, permissions, grantResults) =>
            {
                Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
            })
            .OnNewIntent((activity, intent) =>
            {
                Platform.OnNewIntent(intent);
            })
            .OnResume((activity) =>
            {
                Platform.OnResume();
            }));
#elif __IOS__
        life.AddiOS(ios => ios
            .ContinueUserActivity((application, userActivity, completionHandler) =>
            {
                return Platform.ContinueUserActivity(application, userActivity, completionHandler);
            })
            .OpenUrl((application, url, options) =>
            {
                return Platform.OpenUrl(application, url, options);
            })
            .PerformActionForShortcutItem((application, shortcutItem, completionHandler) =>
            {
                Platform.PerformActionForShortcutItem(application, shortcutItem, completionHandler);
            }));
#elif WINDOWS
        life.AddWindows(windows => windows
            .OnLaunched((application, args) =>
            {
                Platform.OnLaunched(args);
            }));
#endif
    });

Android için; Permission handling, uygulama arka plandayken tekrar açtığımızda OnResume handling, iOS için; OpenUrl ve Activity handling, Windows için; OnLaunched handling gibi birçok özelliği yönetebiliyoruz.

#if #endif arasına debug attach edebiliyorsunuz.

https://github.com/dotnet/maui/blob/main/src/Controls/samples/Controls.Sample/Extensions/EssentialsExtensions.cs

Kaynak : https://devblogs.microsoft.com/dotnet/announcing-net-multi-platform-app-ui-preview-3/

Yiğit

Xamarin Developer, Consultant & Architect. Community Leader and Director of Xamarin Türkiye

Post A Reply