Xamarin.Forms Uygulama Yaşam Döngüsü Öğreticisi
Bu öğreticiye başlamadan önce şunları başarıyla tamamlamış olmanız gerekir:
- İlk Xamarin.Forms uygulama hızlı başlangıcınızı oluşturun.
- StackLayout öğreticisi.
- Giriş öğreticisi.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Uygulama başlatma, uykuya geçirme veya sürdürme durumlarına yanıt verme.
- Yaşam döngüsü durumundaki değişikliklerde verilerin kalıcı olmasını sağlama.
Yaşam döngüsü durum değişiklikleri arasında verileri kalıcı hale getirmeyi gösteren basit bir uygulama oluşturmak için Visual Studio 2019 veya Mac için Visual Studio kullanacaksınız. Aşağıdaki ekran görüntüleri, son uygulamayı gösterir:
Yaşam döngüsü durum değişikliklerine yanıt verme
Bu öğreticiyi tamamlamak için Visual Studio 2019 (son sürüm) ve .NET ile mobil uygulama geliştirme iş yükü sisteminizde yüklü olmalıdır. Ayrıca öğretici uygulamasını iOS üzerinde derleyebilmek için eşleştirilmiş bir Mac de gerekecektir. Xamarin platformunu yükleme hakkında bilgi için bkz. Xamarin'i Yükleme. Visual Studio 2019'u bir Mac derleme ana bilgisayarına bağlama hakkında bilgi için bkz. Xamarin.iOS geliştirme için Mac ile eşleştirme.
Visual Studio'yu başlatın ve AppLifecycleTutorial adlı boş Xamarin.Forms bir uygulama oluşturun.
Önemli
Bu öğreticide kullanılan C# ve XAML kod parçacıklarında çözüm adı AppLifecycleTutorial olarak belirlenmiştir. Farklı bir ad kullanırsanız bu öğreticideki kodları çözüme kopyaladığınızda derleme hatalarıyla karşılaşabilirsiniz.
Oluşturulan .NET Standard kitaplığı hakkında daha fazla bilgi için Bkz. Hızlı Başlangıç Ayrıntılı Bakış'taXamarin.Forms uygulamanın Xamarin.Forms anatomisi.
Çözüm Gezgini'ndeki AppLifecycleTutorial projesinde App.xaml bölümünü genişlettikten sonra App.xaml.cs dosyasına çift tıklayıp açın. Ardından App.xaml.cs içinde
OnStart
,OnSleep
veOnResume
geçersiz kılma işlemlerini şu şekilde güncelleştirin:protected override void OnStart() { Console.WriteLine("OnStart"); } protected override void OnSleep() { Console.WriteLine("OnSleep"); } protected override void OnResume() { Console.WriteLine("OnResume"); }
Bu kod, uygulama yaşam döngüsü yöntemi geçersiz kılma işlemlerini her bir yöntemin çağrıldığı zamanı belirten
Console.WriteLine
deyimleriyle güncelleştirir:OnStart
yöntemi, uygulama başlatıldığında çağrılır.OnSleep
yöntemi, uygulama arka plana atıldığında çağrılır.OnResume
yöntemi, uygulama arka plandan sürdürüldüğünde çağrılır.
Not
Uygulama sonlandırma için bir yöntem yoktur. Normal koşullarda uygulama sonlandırıldığında
OnSleep
yöntemi çağrılacaktır.Visual Studio araç çubuğunda Başlat düğmesine (Oynat düğmesine benzeyen üçgen düğme) basarak uygulamayı seçtiğiniz uzak iOS simülatöründe veya Android öykünücüsünde başlatın. Uygulama başlatıldığında
OnStart
yöntemi çağrılır ve Visual Studio Çıkış penceresinde OnStart görüntülenir:[Mono] Found as 'java_interop_jnienv_get_object_array_element'. OnStart [OpenGLRenderer] HWUI GL Pipeline
Uygulama arka plana atıldığında (iOS veya Android üzerinde Giriş düğmesine basılarak)
OnSleep
yöntemi çağrılır:[EGL_emulation] eglMakeCurrent: 0x83ee2920: ver 3 0 (tinfo 0x8357eff0) OnSleep [Mono] Image addref System.Runtime.Serialization[0x83ee19c0] -> System.Runtime.Serialization.dll[0x83f57b00]: 2
Ardından uygulama arka plandan sürdürüldüğünde (iOS üzerinde uygulama simgesine dokunun veya Android'de Genel bakış düğmesine dokunup AppLifecycleTutorial uygulamasını seçin)
OnResume
yöntemi çağrılır:Thread finished: <Thread Pool> #5 OnResume [EGL_emulation] eglMakeCurrent: 0x83ee2920: ver 3 0 (tinfo 0x8357eff0)
Not
Bu kod bloklarında uygulama Android üzerinde çalıştırıldığında ortaya çıkan durumlar gösterilmiştir.
Visual Studio'da uygulamayı durdurun.
Uygulama yaşam döngüsü hakkında Xamarin.Forms daha fazla bilgi için bkz Xamarin.Forms . Uygulama Yaşam Döngüsü.
Yaşam döngüsü durumundaki değişikliklerde verilerin kalıcı olmasını sağlama
Application
alt sınıfı, verileri yaşam döngüsü durumu değişiklikleri arasında depolamak için kullanılabilecek statik Properties
sözlüğüne sahiptir. Bu sözlük bir string
anahtarı kullanarak bir object
değeri depolar. Sözlük, cihaza otomatik olarak kaydedilir ve uygulama yeniden başlatıldığında tekrar doldurulur.
Önemli
Properties
sözlüğü yalnızca ilkel türleri depolama için seri hale getirebilir.
Bu alıştırmada uygulamayı arka planda işleme sonrasında Entry
metnini tutacak ve uygulama yeniden başlatıldığında metni Entry
içine geri yükleyecek şekilde değiştireceksiniz.
Çözüm Gezgini'ndeki AppLifecycleTutorial projesinde App.xaml bölümünü genişlettikten sonra App.xaml.cs dosyasına çift tıklayıp açın. Ardından App.xaml.cs içindeki şablon kodunun tamamını silip aşağıdaki kodu ekleyin:
using System; using Xamarin.Forms; namespace AppLifecycleTutorial { public partial class App : Application { const string displayText = "displayText"; public string DisplayText { get; set; } public App() { InitializeComponent(); MainPage = new MainPage(); } protected override void OnStart() { Console.WriteLine("OnStart"); if (Properties.ContainsKey(displayText)) { DisplayText = (string)Properties[displayText]; } } protected override void OnSleep() { Console.WriteLine("OnSleep"); Properties[displayText] = DisplayText; } protected override void OnResume() { Console.WriteLine("OnResume"); } } }
Bu kod bir
DisplayText
özelliği ve birdisplayText
sabiti tanımlar. Uygulama arka planda işlendiğinde veya sonlandırıldığındaOnSleep
yöntemi geçersiz kılma işlemiDisplayText
özelliğiniProperties
sözlüğüne,displayText
anahtarının karşılığı olarak ekler. Ardından uygulama başlatıldığındaProperties
sözlüğünündisplayText
anahtarına sahip olması şartıyla anahtarın değeriDisplayText
özelliğine geri yüklenir.Önemli
Beklenmeyen hataları önlemek için
Properties
sözlüğünde belirli bir anahtarın mevcut olup olmadığını mutlaka kontrol edin.Properties
sözlüğündeki verilerinOnResume
yöntemi aşırı yükünde geri yüklenmesi şart değildir. Bunun nedeni uygulama arka planda işlendiğinde kendisinin ve durumunun bellekte olmasıdır.Çözüm Gezgini'ndeki AppLifecycleTutorial proje MainPage.xaml dosyasına çift tıklayıp açın. Ardından MainPage.xaml içindeki şablon kodunun tamamını silip aşağıdaki kodu ekleyin:
<?xml version="1.0" encoding="utf-8"?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="AppLifecycleTutorial.MainPage"> <StackLayout Margin="20,35,20,20"> <Entry x:Name="entry" Placeholder="Enter text here" Completed="OnEntryCompleted" /> </StackLayout> </ContentPage>
Bu kod, sayfa için kullanıcı arabirimini bildirimli bir şekilde tanımlar ve bu da bir
StackLayout
içindekiEntry
bileşeninden oluşur.Entry.Placeholder
özelliği,Entry
ilk görüntülendiğinde gösterilen yer tutucu metnini belirtir veOnEntryCompleted
adlı bir olay işleyicisi,Completed
olayıyla birlikte kaydedilmiştir.Entry
ayrıcax:Name
özniteliğiyle belirtilen bir ada sahiptir. Bu da arka plandaki kodunEntry
nesnesine atanmış adı kullanarak erişmesini sağlar.Çözüm Gezgini'ndeki AppLifecycleTutorial projesinde MainPage.xaml bölümünü genişletip MainPage.xaml.cs dosyasına çift tıklayarak açın. Ardından MainPage.xaml.cs içinde
OnAppearing
yöntemi için bir geçersiz kılma ve sınıfaOnEntryCompleted
olay işleyicisini ekleyin:protected override void OnAppearing() { base.OnAppearing(); entry.Text = (Application.Current as App).DisplayText; } void OnEntryCompleted(object sender, EventArgs e) { (Application.Current as App).DisplayText = entry.Text; }
OnAppearing
yöntemiApp.DisplayText
özelliğinin değerini alır veEntry
öğesininText
özellik değeri olarak ayarlar.Not
OnAppearing
yöntemi geçersiz kılma işlemi,ContentPage
yerleştirildikten sonra ancak görünür duruma gelmeden önce yürütülür. Bu nedenle, burası görünümlerin içeriğini ayarlamak için iyi bir yerdir Xamarin.Forms .Metin
Entry
içinde son haline getirildiğinde dönüş anahtarıyla birlikteOnEntryCompleted
yöntemi yürütülür veEntry
metniApp.DisplayText
özelliğinde depolanır.Visual Studio araç çubuğunda Başlat düğmesine (Oynat düğmesine benzeyen üçgen düğme) basarak uygulamayı seçtiğiniz uzak iOS simülatöründe veya Android öykünücüsünde başlatın.
Entry
içine metin girip Enter tuşuna basın. Ardından Giriş düğmesine basıpOnSleep
yöntemini çağırarak uygulamayı arka plana atın.Visual Studio'da uygulamayı durdurup yeniden başlatın;
Entry
içine girdiğiniz metnin geri yüklendiğini göreceksiniz:Visual Studio'da uygulamayı durdurun.
Verileri özellikler sözlüğünde kalıcı hale getirmek hakkında daha fazla bilgi için, Uygulama Sınıfı kılavuzundaki Özellikler Sözlüğü'ne Xamarin.Forms bakın.
Tebrikler!
Tebrikler, bu öğreticiyi tamamlayarak aşağıdakilerin nasıl yapıldığını öğrendiniz:
- Uygulama başlatma, uykuya geçirme veya sürdürme durumlarına yanıt verme.
- Yaşam döngüsü durumundaki değişikliklerde verilerin kalıcı olmasını sağlama.
Sonraki adımlar
ile Xamarin.Formsmobil uygulama oluşturmanın temelleri hakkında daha fazla bilgi edinmek için Yerel Veritabanı öğreticisine geçin.
İlgili bağlantılar
Bu bölümle ilgili bir sorununuz mu var? Öyleyse bu bölümü iyileştirebilmemiz için lütfen geri bildirimde bulunun.