Siklus hidup aplikasi Platform Windows Universal (UWP)

Topik ini menjelaskan siklus hidup aplikasi Platform Windows Universal (UWP) sejak diluncurkan hingga ditutup.

Sebuah sejarah kecil

Sebelum Windows 8, aplikasi memiliki siklus hidup sederhana. Aplikasi Win32 dan .NET berjalan atau tidak berjalan. Saat pengguna meminimalkan mereka, atau beralih menjauh dari mereka, mereka terus berjalan. Hal ini baik-baik saja sampai perangkat portabel dan manajemen daya menjadi semakin penting.

Windows 8 memperkenalkan model aplikasi baru dengan aplikasi UWP. Pada tingkat tinggi, status ditangguhkan baru ditambahkan. Aplikasi UWP ditangguhkan segera setelah pengguna meminimalkannya atau beralih ke aplikasi lain. Ini berarti bahwa utas aplikasi dihentikan dan aplikasi dibiarkan dalam memori kecuali sistem operasi perlu mengklaim kembali sumber daya. Saat pengguna beralih kembali ke aplikasi, pengguna dapat dengan cepat dipulihkan ke status berjalan.

Ada berbagai cara untuk aplikasi yang perlu terus berjalan ketika berada di latar belakang seperti tugas latar belakang, eksekusi yang diperluas, dan eksekusi yang disponsori aktivitas (misalnya, kemampuan BackgroundMediaEnabled yang memungkinkan aplikasi untuk terus memutar media di latar belakang). Selain itu, operasi transfer latar belakang dapat berlanjut meskipun aplikasi Anda ditangguhkan atau bahkan dihentikan. Untuk informasi selengkapnya, lihat Cara mengunduh file.

Secara default, aplikasi yang tidak berada di latar depan ditangguhkan. Ini menghasilkan penghematan daya dan lebih banyak sumber daya yang tersedia untuk aplikasi yang saat ini berada di latar depan.

Status ditangguhkan menambahkan persyaratan baru untuk Anda sebagai pengembang karena sistem operasi dapat memilih untuk menghentikan aplikasi yang ditangguhkan untuk membebaskan sumber daya. Aplikasi yang dihentikan masih akan muncul di bilah tugas. Ketika pengguna mengkliknya, aplikasi harus memulihkan status tempat aplikasi berada sebelum dihentikan karena pengguna tidak akan menyadari bahwa sistem menutup aplikasi. Mereka akan berpikir bahwa itu telah menunggu di latar belakang saat mereka melakukan hal-hal lain dan akan mengharapkannya berada dalam keadaan yang sama ketika mereka meninggalkannya. Dalam topik ini kita akan melihat cara mencapainya.

Windows 10, versi 1607, memperkenalkan dua status model aplikasi lagi: Berjalan di latar depan dan Berjalan di latar belakang. Kita akan melihat status tambahan ini di bagian berikut.

Status eksekusi aplikasi

Ilustrasi ini mewakili kemungkinan status model aplikasi mulai dari Windows 10, versi 1607. Mari kita telusuri siklus hidup khas aplikasi UWP.

state diagram showing transitions between app execution states

Aplikasi memasukkan yang berjalan dalam status latar belakang saat diluncurkan atau diaktifkan. Jika aplikasi perlu pindah ke latar depan karena peluncuran aplikasi latar depan, aplikasi kemudian mendapatkan peristiwa LeavingBackground.

Meskipun "diluncurkan" dan "diaktifkan" mungkin tampak seperti istilah serupa, mereka merujuk pada berbagai cara sistem operasi dapat memulai aplikasi Anda. Mari kita lihat terlebih dahulu meluncurkan aplikasi.

Peluncuran aplikasi

Metode OnLaunched dipanggil saat aplikasi diluncurkan. Ini diteruskan parameter LaunchActivatedEventArgs yang menyediakan, antara lain, argumen yang diteruskan ke aplikasi, pengidentifikasi petak peta yang meluncurkan aplikasi, dan status sebelumnya tempat aplikasi berada.

Dapatkan status aplikasi Anda sebelumnya dari LaunchActivatedEventArgs.PreviousExecutionState yang mengembalikan ApplicationExecutionState. Nilainya dan tindakan yang sesuai untuk diambil karena status tersebut adalah sebagai berikut:

ApplicationExecutionState Penjelasan Tindakan yang harus diambil
NotRunning Aplikasi dapat berada dalam status ini karena belum diluncurkan sejak terakhir kali pengguna melakukan boot ulang atau masuk. Ini juga dapat berada dalam status ini jika berjalan tetapi kemudian mengalami crash, atau karena pengguna menutupnya sebelumnya. Inisialisasi aplikasi seolah-olah berjalan untuk pertama kalinya dalam sesi pengguna saat ini.
Ditangguhkan Pengguna diminimalkan atau dialihkan dari aplikasi Anda dan tidak kembali ke dalam beberapa detik. Ketika aplikasi ditangguhkan, statusnya tetap dalam memori. Anda hanya perlu memperoleh kembali handel file apa pun atau sumber daya lain yang Anda rilis saat aplikasi ditangguhkan.
Diakhiri Aplikasi sebelumnya ditangguhkan tetapi kemudian dimatikan pada titik tertentu karena sistem perlu mengklaim kembali memori. Pulihkan status aplikasi saat pengguna beralih darinya.
ClosedByUser Pengguna menutup aplikasi dengan tombol tutup sistem, atau dengan Alt+F4. Ketika pengguna menutup aplikasi, pertama-tama ditangguhkan dan kemudian dihentikan. Karena aplikasi pada dasarnya telah melalui langkah-langkah yang sama yang mengarah ke status Dihentikan, tangani dengan cara yang sama seperti Anda akan status Dihentikan.
Sedang berjalan Aplikasi sudah terbuka ketika pengguna mencoba meluncurkannya lagi. Tidak ada. Perhatikan bahwa instans lain aplikasi Anda tidak diluncurkan. Instans yang sudah berjalan hanya diaktifkan.

Catatan

Sesi pengguna saat ini didasarkan pada log masuk Windows. Selama pengguna saat ini belum keluar, mematikan, atau memulai ulang Windows, sesi pengguna saat ini berlanjut di seluruh peristiwa seperti autentikasi layar kunci, beralih pengguna, dan sebagainya.

Salah satu keadaan penting yang perlu diperhatikan adalah bahwa jika perangkat memiliki sumber daya yang memadai, sistem operasi akan sering menggunakan aplikasi yang telah memilih untuk perilaku tersebut untuk mengoptimalkan responsivitas. Aplikasi yang telah diluncurkan sebelumnya diluncurkan di latar belakang dan kemudian dengan cepat ditangguhkan sehingga ketika pengguna beralih ke aplikasi tersebut, mereka dapat dilanjutkan yang lebih cepat daripada meluncurkan aplikasi.

Karena prelaunch, metode OnLaunched() aplikasi dapat dimulai oleh sistem daripada oleh pengguna. Karena aplikasi telah dilaunching di latar belakang, Anda mungkin perlu mengambil tindakan yang berbeda di OnLaunched(). Misalnya, jika aplikasi Anda mulai memutar musik saat diluncurkan, mereka tidak akan tahu dari mana asalnya karena aplikasi telah diluncurkan sebelumnya di latar belakang. Setelah aplikasi Anda dilaunching di latar belakang, aplikasi diikuti dengan panggilan ke Application.Suspending. Kemudian, ketika pengguna meluncurkan aplikasi, peristiwa lanjutan dipanggil serta metode OnLaunched(). Lihat Menangani prelaunch aplikasi untuk informasi tambahan tentang cara menangani skenario pra-operasi. Hanya aplikasi yang ikut serta yang telah diluaskan sebelumnya.

Windows menampilkan layar percikan untuk aplikasi saat diluncurkan. Untuk mengonfigurasi layar percikan, lihat Menambahkan layar percikan.

Saat layar percikan ditampilkan, aplikasi Anda harus mendaftarkan penanganan aktivitas dan menyiapkan UI kustom apa pun yang diperlukan untuk halaman awal. Lihat bahwa tugas-tugas ini yang berjalan di konstruktor aplikasi dan OnLaunched() selesai dalam beberapa detik atau sistem mungkin berpikir aplikasi Anda tidak responsif dan menghentikannya. Jika aplikasi perlu meminta data dari jaringan atau perlu mengambil data dalam jumlah besar dari disk, aktivitas ini harus diselesaikan di luar peluncuran. Aplikasi dapat menggunakan UI pemuatan kustomnya sendiri atau layar splash yang diperluas sambil menunggu operasi yang berjalan lama selesai. Lihat Menampilkan layar percikan untuk lebih banyak waktu dan sampel layar Splash untuk informasi selengkapnya.

Setelah aplikasi selesai diluncurkan, aplikasi memasuki status Berjalan dan layar splash menghilang dan semua sumber daya layar splash dan objek dibersihkan.

Aktivasi aplikasi

Berbeda dengan yang diluncurkan oleh pengguna, aplikasi dapat diaktifkan oleh sistem. Aplikasi dapat diaktifkan oleh kontrak seperti kontrak berbagi. Atau mungkin diaktifkan untuk menangani protokol URI kustom atau file dengan ekstensi yang didaftarkan aplikasi Anda untuk ditangani. Untuk daftar cara aplikasi Anda dapat diaktifkan, lihat ActivationKind.

Kelas Windows.UI.Xaml.Application menentukan metode yang dapat Anda ambil alih untuk menangani berbagai cara aplikasi Anda dapat diaktifkan. Aktif dapat menangani semua jenis aktivasi yang mungkin. Namun, lebih umum untuk menggunakan metode tertentu untuk menangani jenis aktivasi yang paling umum, dan menggunakan OnActivated sebagai metode fallback untuk jenis aktivasi yang kurang umum. Ini adalah metode tambahan untuk aktivasi tertentu:

OnCachedFileUpdaterActivated
OnFileActivated
OnFileOpenPickerActivatedOnFileSavePickerActivated
OnSearchActivated
OnShareTargetActivated

Data peristiwa untuk metode ini mencakup properti PreviousExecutionState yang sama dengan yang kami lihat di atas, yang memberi tahu Anda status aplikasi Anda sebelum diaktifkan. Interpretasikan status dan apa yang harus Anda lakukan dengan cara yang sama seperti yang dijelaskan di atas di bagian Peluncuran aplikasi.

Catatan Jika Anda masuk menggunakan akun Administrator komputer, Anda tidak dapat mengaktifkan aplikasi UWP.

Berjalan di latar belakang

Dimulai dengan Windows 10, versi 1607, aplikasi dapat menjalankan tugas latar belakang dalam proses yang sama dengan aplikasi itu sendiri. Baca selengkapnya tentang hal itu di Aktivitas latar belakang dengan Model Proses Tunggal. Kami tidak akan masuk ke pemrosesan latar belakang dalam proses dalam artikel ini, tetapi bagaimana hal ini berdampak pada siklus hidup aplikasi adalah bahwa dua peristiwa baru telah ditambahkan terkait dengan saat aplikasi Anda berada di latar belakang. Mereka adalah: EnteredBackground dan LeavingBackground.

Peristiwa ini juga mencerminkan apakah pengguna dapat melihat UI aplikasi Anda.

Berjalan di latar belakang adalah status default tempat aplikasi diluncurkan, diaktifkan, atau dilanjutkan. Dalam status ini, UI aplikasi Anda belum terlihat.

Berjalan di latar depan

Berjalan di latar depan berarti UI aplikasi Anda terlihat.

Peristiwa LeavingBackground diaktifkan tepat sebelum UI aplikasi Anda terlihat dan sebelum memasuki berjalan dalam status latar depan. Ini juga diaktifkan saat pengguna beralih kembali ke aplikasi Anda.

Sebelumnya, lokasi terbaik untuk memuat aset UI berada di penanganan aktivitas Diaktifkan atau Melanjutkan . Sekarang LeavingBackground adalah tempat terbaik untuk memverifikasi bahwa UI Anda sudah siap.

Penting untuk memeriksa bahwa aset visual siap saat ini karena ini adalah kesempatan terakhir untuk melakukan pekerjaan sebelum aplikasi Anda terlihat oleh pengguna. Semua UI yang berfungsi dalam penanganan aktivitas ini harus selesai dengan cepat, karena berdampak pada waktu peluncuran dan resume yang dialami pengguna. LeavingBackground adalah waktu untuk memastikan bingkai pertama UI siap. Kemudian, penyimpanan jangka panjang atau panggilan jaringan harus ditangani secara asinkron sehingga penanganan aktivitas dapat kembali.

Saat pengguna beralih dari aplikasi Anda, aplikasi Anda memasukkan kembali yang berjalan dalam status latar belakang.

Memasukkan kembali status latar belakang

Peristiwa EnteredBackground menunjukkan bahwa aplikasi Anda tidak lagi terlihat di latar depan. Di desktop EnteredBackground diaktifkan saat aplikasi Anda diminimalkan; di ponsel, saat beralih ke layar beranda atau aplikasi lain.

Mengurangi penggunaan memori aplikasi Anda

Karena aplikasi Anda tidak lagi terlihat oleh pengguna, ini adalah tempat terbaik untuk menghentikan pekerjaan dan animasi penyajian UI. Anda dapat menggunakan LeavingBackground untuk memulai pekerjaan itu lagi.

Jika Anda akan melakukan pekerjaan di latar belakang, ini adalah tempat untuk mempersiapkannya. Yang terbaik adalah memeriksa MemoryManager.AppMemoryUsageLevel dan, jika diperlukan, kurangi jumlah memori yang digunakan oleh aplikasi Anda saat berjalan di latar belakang sehingga aplikasi Anda tidak berisiko dihentikan oleh sistem untuk membebaskan sumber daya.

Lihat Mengurangi penggunaan memori saat aplikasi Anda berpindah ke status latar belakang untuk detail selengkapnya.

Simpan status Anda

Penanganan aktivitas yang ditangguhkan adalah tempat terbaik untuk menyimpan status aplikasi Anda. Namun, jika Anda melakukan pekerjaan di latar belakang (misalnya, pemutaran audio, menggunakan sesi eksekusi yang diperluas atau tugas latar belakang dalam proc), ini juga merupakan praktik yang baik untuk menyimpan data Anda secara asinkron dari penanganan aktivitas EnteredBackground Anda. Ini karena aplikasi Anda dapat dihentikan saat berada pada prioritas yang lebih rendah di latar belakang. Dan karena aplikasi tidak akan melalui status ditangguhkan dalam hal ini, data Anda akan hilang.

Menyimpan data Anda di penanganan aktivitas EnteredBackground Anda, sebelum aktivitas latar belakang dimulai, memastikan pengalaman pengguna yang baik saat pengguna membawa aplikasi Anda kembali ke latar depan. Anda dapat menggunakan API data aplikasi untuk menyimpan data dan pengaturan. Untuk informasi selengkapnya, lihat Menyimpan dan mengambil pengaturan dan data aplikasi lainnya.

Setelah menyimpan data, jika Anda melebihi batas penggunaan memori, Maka Anda dapat melepaskan data dari memori karena Anda dapat memuat ulang nanti. Itu akan membebaskan memori yang dapat digunakan oleh aset yang diperlukan untuk aktivitas latar belakang.

Ketahuilah bahwa jika aplikasi Anda memiliki aktivitas latar belakang yang sedang berlangsung bahwa aplikasi dapat berpindah dari yang berjalan di status latar belakang ke yang berjalan dalam status latar depan tanpa pernah mencapai status ditangguhkan.

Catatan

Saat aplikasi Anda ditutup oleh pengguna, dimungkinkan agar peristiwa OnSuspending diaktifkan sebelum peristiwa EnteredBackground . Dalam beberapa kasus, peristiwa EnteredBackground mungkin tidak diaktifkan sebelum aplikasi dihentikan. Penting untuk menyimpan data Anda di penanganan aktivitas OnSuspending .

Pekerjaan asinkron dan Deferral

Jika Anda melakukan panggilan asinkron dalam handler Anda, kontrol akan segera kembali dari panggilan asinkron tersebut. Itu berarti bahwa eksekusi kemudian dapat kembali dari penanganan aktivitas Anda dan aplikasi Anda akan pindah ke status berikutnya meskipun panggilan asinkron belum selesai. Gunakan metode GetDeferral pada objek EnteredBackgroundEventArgs yang diteruskan ke penanganan aktivitas Anda untuk menunda penangguhan hingga setelah Anda memanggil metode Lengkap pada objek Windows.Foundation.Deferral yang dikembalikan.

Penangguhan tidak meningkatkan jumlah waktu yang Anda miliki untuk menjalankan kode sebelum aplikasi dihentikan. Ini hanya menunda penghentian sampai metode Lengkap penundaan dipanggil, atau tenggat waktu berlalu-mana yang lebih dulu.

Jika Anda memerlukan lebih banyak waktu untuk menyimpan status Anda, selidiki cara untuk menyimpan status Anda secara bertahap sebelum aplikasi Anda memasuki status latar belakang sehingga tidak ada yang lebih sedikit untuk disimpan di penanganan aktivitas OnSuspending Anda. Atau Anda dapat meminta ExtendedExecutionSession untuk mendapatkan lebih banyak waktu. Namun, tidak ada jaminan bahwa permintaan akan diberikan, jadi yang terbaik adalah menemukan cara untuk meminimalkan jumlah waktu yang Anda butuhkan untuk menghemat status Anda.

Penangguhan aplikasi

Ketika pengguna meminimalkan aplikasi Windows menunggu beberapa detik untuk melihat apakah pengguna akan beralih kembali ke aplikasi tersebut. Jika mereka tidak beralih kembali dalam jendela waktu ini, dan tidak ada eksekusi yang diperluas, tugas latar belakang, atau eksekusi bersponsor aktivitas aktif, Windows menangguhkan aplikasi. Aplikasi juga ditangguhkan ketika layar kunci muncul selama tidak ada sesi eksekusi yang diperpanjang, dll. aktif di aplikasi tersebut.

Saat aplikasi ditangguhkan, aplikasi akan memanggil peristiwa Application.Suspending. Templat proyek UWP Visual Studio menyediakan handler untuk peristiwa ini yang disebut OnSuspending di App.xaml.cs. Anda harus meletakkan kode untuk menyimpan status aplikasi Anda di sini.

Anda harus merilis sumber daya eksklusif dan handel file sehingga aplikasi lain dapat mengaksesnya saat aplikasi Anda ditangguhkan. Contoh sumber daya eksklusif termasuk kamera, perangkat I/O, perangkat eksternal, dan sumber daya jaringan. Merilis sumber daya dan handel file eksklusif secara eksplisit membantu memastikan bahwa aplikasi lain dapat mengaksesnya saat aplikasi Anda ditangguhkan. Saat aplikasi dilanjutkan, aplikasi harus memperoleh kembali sumber daya eksklusif dan handel filenya.

Waspadai tenggat waktu

Untuk memastikan perangkat yang cepat dan responsif, ada batasan untuk jumlah waktu yang Anda miliki untuk menjalankan kode Anda di penanganan aktivitas yang ditangguhkan. Ini berbeda untuk setiap perangkat, dan Anda dapat mengetahui apa itu menggunakan properti objek SuspendingOperation yang disebut tenggat waktu.

Seperti halnya penanganan aktivitas EnteredBackground , jika Anda melakukan panggilan asinkron dari handler Anda, kontrol akan segera kembali dari panggilan asinkron tersebut. Itu berarti bahwa eksekusi kemudian dapat kembali dari penanganan aktivitas Anda dan aplikasi Anda akan pindah ke status ditangguhkan meskipun panggilan asinkron belum selesai. Gunakan metode GetDeferral pada objek SuspendingOperation (tersedia melalui args peristiwa) untuk menunda memasuki status ditangguhkan sampai setelah Anda memanggil metode Lengkap pada objek SuspendingDeferral yang dikembalikan.

Jika Anda membutuhkan lebih banyak waktu, Anda dapat meminta ExtendedExecutionSession. Namun, tidak ada jaminan bahwa permintaan akan diberikan, jadi yang terbaik adalah menemukan cara untuk meminimalkan jumlah waktu yang Anda butuhkan di penanganan aktivitas yang Ditangguhkan.

Penghentian aplikasi

Sistem mencoba menyimpan aplikasi Anda dan datanya dalam memori saat ditangguhkan. Namun, jika sistem tidak memiliki sumber daya untuk menyimpan aplikasi Anda dalam memori, itu akan mengakhiri aplikasi Anda. Aplikasi tidak menerima pemberitahuan bahwa mereka sedang dihentikan, jadi satu-satunya kesempatan yang Anda miliki untuk menyimpan data aplikasi Anda ada di penanganan aktivitas OnSuspending Anda.

Saat aplikasi Anda menentukan bahwa aplikasi telah diaktifkan setelah dihentikan, aplikasi harus memuat data aplikasi yang disimpannya sehingga aplikasi berada dalam status yang sama sebelum dihentikan. Ketika pengguna beralih kembali ke aplikasi yang ditangguhkan yang telah dihentikan, aplikasi harus memulihkan data aplikasinya dalam metode OnLaunched-nya. Sistem tidak memberi tahu aplikasi saat dihentikan, sehingga aplikasi Anda harus menyimpan data aplikasinya dan merilis sumber daya eksklusif dan handel file sebelum ditangguhkan, dan memulihkannya saat aplikasi diaktifkan setelah penghentian.

Catatan tentang penelusuran kesalahan menggunakan Visual Studio: Visual Studio mencegah Windows menangguhkan aplikasi yang dilampirkan ke debugger. Hal ini untuk memungkinkan pengguna melihat UI debug Visual Studio saat aplikasi sedang berjalan. Saat menelusuri kesalahan aplikasi, Anda dapat mengirimkannya acara penangguhan menggunakan Visual Studio. Pastikan toolbar Lokasi Debug sedang ditampilkan, lalu klik ikon Tangguhkan .

Resume aplikasi

Aplikasi yang ditangguhkan dilanjutkan saat pengguna beralih ke aplikasi tersebut atau ketika aplikasi aktif ketika perangkat keluar dari status daya rendah.

Saat aplikasi dilanjutkan dari status Ditangguhkan , aplikasi memasuki status Berjalan di latar belakang dan sistem memulihkan aplikasi yang ditinggalkannya sehingga muncul kepada pengguna seolah-olah telah berjalan selama ini. Tidak ada data aplikasi yang disimpan dalam memori yang hilang. Oleh karena itu, sebagian besar aplikasi tidak perlu memulihkan status saat dilanjutkan meskipun harus meminta kembali file atau perangkat apa pun yang ditangani yang dirilis saat ditangguhkan, dan memulihkan status apa pun yang dirilis secara eksplisit saat aplikasi ditangguhkan.

Aplikasi Anda mungkin ditangguhkan selama berjam-jam atau ber hari. Jika aplikasi Anda memiliki konten atau koneksi jaringan yang mungkin sudah basi, ini harus di-refresh saat aplikasi dilanjutkan. Jika aplikasi mendaftarkan penanganan aktivitas untuk peristiwa Application.Resuming, aplikasi dipanggil saat aplikasi dilanjutkan dari status Ditangguhkan. Anda dapat merefresh konten dan data aplikasi di penanganan aktivitas ini.

Jika aplikasi yang ditangguhkan diaktifkan untuk berpartisipasi dalam kontrak atau ekstensi aplikasi, aplikasi akan menerima peristiwa Melanjutkan terlebih dahulu, maka peristiwa Diaktifkan .

Jika aplikasi yang ditangguhkan dihentikan, tidak ada peristiwa Melanjutkan dan sebaliknya OnLaunched() dipanggil dengan ApplicationExecutionState dari Dihentikan. Karena Anda menyimpan status saat aplikasi ditangguhkan, Anda dapat memulihkan status tersebut selama OnLaunched() sehingga aplikasi Anda muncul kepada pengguna seperti saat mereka beralih darinya.

Saat aplikasi ditangguhkan, aplikasi tidak menerima peristiwa jaringan apa pun yang didaftarkannya untuk diterima. Peristiwa jaringan ini tidak diantrekan--mereka hanya terlewatkan. Oleh karena itu, aplikasi Anda harus menguji status jaringan saat dilanjutkan.

Catatan Karena peristiwa Melanjutkan tidak dinaikkan dari utas UI, dispatcher harus digunakan jika kode di handler resume Anda berkomunikasi dengan UI Anda. Lihat Memperbarui utas UI dari utas latar belakang untuk contoh kode cara melakukannya.

Untuk panduan umum, lihat Panduan untuk aplikasi ditangguhkan dan dilanjutkan.

Tutup aplikasi

Umumnya, pengguna tidak perlu menutup aplikasi, mereka dapat membiarkan Windows mengelolanya. Namun, pengguna dapat memilih untuk menutup aplikasi menggunakan gerakan tutup atau dengan menekan Alt+F4 atau dengan menggunakan pengalih tugas di Windows Telepon.

Tidak ada peristiwa untuk menunjukkan bahwa pengguna menutup aplikasi. Saat aplikasi ditutup oleh pengguna, aplikasi pertama-tama ditangguhkan untuk memberi Anda kesempatan untuk menyimpan statusnya. Di Windows 8.1 dan yang lebih baru, setelah aplikasi ditutup oleh pengguna, aplikasi dihapus dari layar dan daftar pengalihan tetapi tidak dihentikan secara eksplisit.

Perilaku tertutup oleh pengguna: Jika aplikasi Anda perlu melakukan sesuatu yang berbeda saat ditutup oleh pengguna daripada saat ditutup oleh Windows, Anda dapat menggunakan penanganan aktivitas aktivasi untuk menentukan apakah aplikasi dihentikan oleh pengguna atau oleh Windows. Lihat deskripsi status ClosedByUser dan Dihentikan dalam referensi untuk enumerasi ApplicationExecutionState .

Kami menyarankan agar aplikasi tidak menutup diri secara terprogram kecuali benar-benar diperlukan. Misalnya, jika aplikasi mendeteksi kebocoran memori, aplikasi dapat menutup dirinya sendiri untuk memastikan keamanan data pribadi pengguna.

Crash aplikasi

Pengalaman crash sistem dirancang untuk membuat pengguna kembali ke apa yang mereka lakukan secepat mungkin. Anda tidak boleh memberikan dialog peringatan atau pemberitahuan lain karena itu akan menunda pengguna.

Jika aplikasi Anda mengalami crash, berhenti merespons, atau menghasilkan pengecualian, laporan masalah dikirim ke Microsoft sesuai umpan balik dan pengaturan diagnostik pengguna. Microsoft menyediakan subset data kesalahan dalam laporan masalah kepada Anda sehingga Anda dapat menggunakannya untuk meningkatkan aplikasi Anda. Anda akan dapat melihat data ini di halaman Kualitas aplikasi di Dasbor Anda.

Saat pengguna mengaktifkan aplikasi setelah crash, penanganan aktivitas aktivasinya menerima nilai ApplicationExecutionState notRunning, dan harus menampilkan UI dan data awalnya. Setelah crash, jangan secara rutin menggunakan data aplikasi yang akan Anda gunakan untuk Melanjutkan dengan Ditangguhkan karena data tersebut dapat rusak; lihat Panduan untuk aplikasi ditangguhkan dan dilanjutkan.

Penghapusan aplikasi

Saat pengguna menghapus aplikasi Anda, aplikasi akan dihapus, bersama dengan semua data lokalnya. Menghapus aplikasi tidak memengaruhi data pengguna yang disimpan di lokasi umum seperti pustaka Dokumen atau Gambar.

Siklus hidup aplikasi dan templat proyek Visual Studio

Kode dasar yang relevan dengan siklus hidup aplikasi disediakan dalam templat proyek Visual Studio. Aplikasi dasar menangani aktivasi peluncuran, menyediakan tempat bagi Anda untuk memulihkan data aplikasi, dan menampilkan UI utama bahkan sebelum Anda menambahkan kode Anda sendiri. Untuk informasi selengkapnya, lihat templat proyek C#, VB, dan C++ untuk aplikasi.

API siklus hidup aplikasi utama