Xamarin.Forms Tutorial Siklus Hidup Aplikasi
Sebelum mencoba tutorial ini, Anda seharusnya berhasil menyelesaikan:
- Buat mulai cepat aplikasi pertama Xamarin.Forms Anda.
- Tutorial StackLayout .
- Tutorial entri .
Dalam tutorial ini, Anda akan mempelajari cara:
- Menanggapi aplikasi yang dimulai, tidur, atau ditanggapi.
- Mempertahankan data di seluruh perubahan status siklus hidup.
Anda akan menggunakan Visual Studio 2019, atau Visual Studio untuk Mac, untuk membuat aplikasi sederhana yang menunjukkan cara mempertahankan data di seluruh perubahan status siklus hidup. Cuplikan layar berikut menunjukkan aplikasi akhir:
Menanggapi perubahan status siklus hidup
Untuk menyelesaikan tutorial ini, Anda harus memiliki Visual Studio 2019 (rilis terbaru), dengan pengembangan Seluler dengan beban kerja .NET terinstal. Selain itu, Anda akan memerlukan Mac berpasangan untuk membangun aplikasi tutorial di iOS. Untuk informasi tentang menginstal platform Xamarin, lihat Menginstal Xamarin. Untuk informasi tentang menyambungkan Visual Studio 2019 ke host build Mac, lihat Memasangkan ke Mac untuk pengembangan Xamarin.iOS.
Luncurkan Visual Studio, dan buat aplikasi kosong Xamarin.Forms baru bernama AppLifecycleTutorial.
Penting
Cuplikan C# dan XAML dalam tutorial ini mengharuskan solusinya diberi nama AppLifecycleTutorial. Menggunakan nama yang berbeda akan mengakibatkan kesalahan build saat Anda menyalin kode dari tutorial ini ke dalam solusi.
Untuk informasi selengkapnya tentang pustaka .NET Standard yang dibuat, lihat Anatomi aplikasiXamarin.Forms di Xamarin.Forms Mulai Cepat Deep Dive.
Di Penjelajah Solusi, dalam proyek AppLifecycleTutorial, perluas App.xaml dan klik dua kali App.xaml.cs untuk membukanya. Kemudian, di App.xaml.cs, perbarui
OnStart
, ,OnSleep
danOnResume
ambil alih sebagai berikut:protected override void OnStart() { Console.WriteLine("OnStart"); } protected override void OnSleep() { Console.WriteLine("OnSleep"); } protected override void OnResume() { Console.WriteLine("OnResume"); }
Kode ini memperbarui penimpaan metode siklus hidup aplikasi, dengan
Console.WriteLine
pernyataan yang menunjukkan kapan setiap metode telah dipanggil:- Metode
OnStart
ini dipanggil ketika aplikasi dimulai. - Metode
OnSleep
ini dipanggil ketika aplikasi masuk ke latar belakang. - Metode
OnResume
ini dipanggil ketika aplikasi dilanjutkan dari latar belakang.
Catatan
Tidak ada metode untuk penghentian aplikasi. Dalam keadaan normal, penghentian aplikasi akan terjadi dari
OnSleep
metode .- Metode
Di toolbar Visual Studio, tekan tombol Mulai (tombol segitiga yang mirip tombol Putar) untuk meluncurkan aplikasi di dalam simulator iOS jarak jauh yang Anda pilih atau emulator Android. Ketika aplikasi dimulai,
OnStart
metode dipanggil, dan OnStart adalah output ke jendela Output Visual Studio:[Mono] Found as 'java_interop_jnienv_get_object_array_element'. OnStart [OpenGLRenderer] HWUI GL Pipeline
Ketika aplikasi di latar belakang (dengan mengetuk tombol Beranda di iOS atau Android),
OnSleep
metode dipanggil:[EGL_emulation] eglMakeCurrent: 0x83ee2920: ver 3 0 (tinfo 0x8357eff0) OnSleep [Mono] Image addref System.Runtime.Serialization[0x83ee19c0] -> System.Runtime.Serialization.dll[0x83f57b00]: 2
Kemudian, ketika aplikasi dilanjutkan dari latar belakang (ketuk ikon aplikasi di iOS, ketuk tombol Gambaran Umum di Android dan pilih aplikasi AppLifecycleTutorial),
OnResume
metode dipanggil:Thread finished: <Thread Pool> #5 OnResume [EGL_emulation] eglMakeCurrent: 0x83ee2920: ver 3 0 (tinfo 0x8357eff0)
Catatan
Blok kode ini menunjukkan contoh output saat menjalankan aplikasi di Android.
Di Visual Studio, hentikan aplikasi.
Untuk informasi selengkapnya tentang Xamarin.Forms siklus hidup aplikasi, lihat Xamarin.Forms Siklus Hidup Aplikasi.
Menyimpan data di seluruh perubahan status siklus hidup
Subkelas Application
memiliki kamus statis Properties
yang dapat digunakan untuk menyimpan data di seluruh perubahan status siklus hidup. Kamus string
ini menggunakan kunci dan menyimpan object
nilai. Kamus disimpan ke perangkat secara otomatis, dan diisi ulang saat aplikasi dimulai ulang.
Penting
Properties
Kamus hanya dapat menserialisasikan jenis primitif untuk penyimpanan.
Dalam latihan ini, Anda akan memodifikasi aplikasi untuk mempertahankan teks dari Entry
latar belakang, dan memulihkan teks ke Entry
saat aplikasi dimulai ulang.
Di Penjelajah Solusi, dalam proyek AppLifecycleTutorial, perluas App.xaml dan klik dua kali App.xaml.cs untuk membukanya. Kemudian, di App.xaml.cs, hapus semua kode templat dan ganti dengan kode berikut:
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"); } } }
Kode ini mendefinisikan
DisplayText
properti, dandisplayText
konstanta. Ketika aplikasi di latar belakang, atau dihentikan,OnSleep
metode mengambil alih menambahkan nilai properti keProperties
kamusDisplayText
, terhadap kuncidisplayText
. Kemudian ketika aplikasi dimulai, asalkanProperties
kamus berisidisplayText
kunci, nilai untuk kunci dipulihkan keDisplayText
properti .Penting
Selalu periksa
Properties
kamus untuk keberadaan kunci sebelum mengaksesnya, untuk mencegah kesalahan tak terduga.Tidak perlu memulihkan data dari
Properties
kamus dalamOnResume
metode kelebihan beban. Ini karena ketika aplikasi di latar belakang, aplikasi dan statusnya masih dalam memori.Di Penjelajah Solusi, dalam proyek AppLifecycleTutorial, klik dua kali MainPage.xaml untuk membukanya. Kemudian, di MainPage.xaml, hapus semua kode templat dan ganti dengan kode berikut:
<?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>
Kode ini secara deklaratif mendefinisikan antarmuka pengguna untuk halaman, yang terdiri dari
Entry
dalamStackLayout
. PropertiEntry.Placeholder
menentukan teks tempat penampung yang ditampilkan saatEntry
pertama kali ditampilkan, dan penanganan aktivitas bernamaOnEntryCompleted
terdaftar di acara.Completed
Selain itu,Entry
memiliki nama yang ditentukan denganx:Name
atribut . Ini memungkinkan file code-behind untuk mengaksesEntry
objek menggunakan nama yang ditetapkan untuknya.Di Penjelajah Solusi, dalam proyek AppLifecycleTutorial, perluas MainPage.xaml dan klik dua kali MainPage.xaml.cs untuk membukanya. Kemudian, di MainPage.xaml.cs, tambahkan penimpaan
OnAppearing
untuk metode , dan penangananOnEntryCompleted
aktivitas ke kelas :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; }
Metode mengambil
OnAppearing
nilaiApp.DisplayText
properti dan menetapkannya sebagaiText
nilai properti dariEntry
.Catatan
Penimpaan
OnAppearing
metode dijalankan setelah ditataContentPage
, tetapi tepat sebelum terlihat. Oleh karena itu, ini adalah tempat yang baik untuk mengatur konten Xamarin.Forms tampilan.Ketika teks difinalisasi dalam
Entry
, dengan kunci pengembalian,OnEntryCompleted
metode dijalankan danEntry
teks disimpan dalamApp.DisplayText
properti .Di toolbar Visual Studio, tekan tombol Mulai (tombol segitiga yang mirip tombol Putar) untuk meluncurkan aplikasi di dalam simulator iOS jarak jauh yang Anda pilih atau emulator Android.
Masukkan beberapa teks ke
Entry
dalam dan tekan tombol kembali. Kemudian, latar belakang aplikasi dengan mengetuk tombol Beranda untuk memanggilOnSleep
metode .Di Visual Studio, hentikan aplikasi dan lampirkan kembali, dan teks yang sebelumnya dimasukkan ke dalam
Entry
akan dipulihkan:Di Visual Studio, hentikan aplikasi.
Untuk informasi selengkapnya tentang menyimpan data ke kamus properti, lihat Kamus Properti diXamarin.Formspanduan Kelas Aplikasi.
Selamat!
Selamat atas penyelesaian tutorial ini, di mana Anda belajar cara:
- Menanggapi aplikasi yang dimulai, tidur, atau ditanggapi.
- Mempertahankan data di seluruh perubahan status siklus hidup.
Langkah berikutnya
Untuk mempelajari selengkapnya tentang dasar-dasar pembuatan aplikasi seluler dengan Xamarin.Forms, lanjutkan ke tutorial Database Lokal.
Tautan terkait
Memiliki masalah dengan bagian ini? Jika iya, berikan umpan balik kepada kami agar kami dapat meningkatkan bagian ini.