Mendukung aplikasi Anda dengan tugas latar belakang

Topik di bagian ini menunjukkan kepada Anda cara membuat kode ringan berjalan di latar belakang sebagai respons terhadap pemicu. Anda dapat menggunakan tugas latar belakang untuk menyediakan fungsionalitas saat aplikasi ditangguhkan atau tidak berjalan. Anda juga dapat menggunakan tugas latar belakang untuk aplikasi komunikasi real-time seperti VOIP, email, dan IM.

Memutar media di latar belakang

Mulai dari Windows 10, versi 1607, memutar audio di latar belakang jauh lebih mudah. Lihat Memutar media di latar belakang untuk informasi selengkapnya.

Tugas latar belakang dalam proses dan di luar proses

Ada dua pendekatan untuk menerapkan tugas latar belakang:

  • Dalam proses: aplikasi dan proses latar belakangnya berjalan dalam proses yang sama
  • Di luar proses: aplikasi dan proses latar belakang berjalan dalam proses terpisah.

Dukungan latar belakang dalam proses diperkenalkan dalam Windows 10, versi 1607, untuk menyederhanakan penulisan tugas latar belakang. Tetapi Anda masih dapat menulis tugas latar belakang yang tidak diproses. Lihat Panduan untuk tugas latar belakang untuk rekomendasi tentang kapan harus menulis tugas latar belakang dalam proses versus di luar proses.

Tugas latar belakang di luar proses lebih tangguh karena proses latar belakang tidak dapat menurunkan proses aplikasi Anda jika terjadi kesalahan. Tetapi ketahanan datang pada harga kompleksitas yang lebih besar untuk mengelola komunikasi lintas proses antara aplikasi dan tugas latar belakang.

Tugas latar belakang di luar proses diimplementasikan sebagai kelas ringan yang mengimplementasikan antarmuka IBackgroundTask yang dijalankan OS dalam proses terpisah (backgroundtaskhost.exe). Daftarkan tugas latar belakang dengan menggunakan kelas BackgroundTaskBuilder . Nama kelas digunakan untuk menentukan titik masuk saat Anda mendaftarkan tugas latar belakang.

Di Windows 10, versi 1607, Anda dapat mengaktifkan aktivitas latar belakang tanpa membuat tugas latar belakang. Anda dapat menjalankan kode latar belakang Anda langsung di dalam proses aplikasi latar depan.

Untuk memulai dengan cepat dengan tugas latar belakang dalam proses, lihat Membuat dan mendaftarkan tugas latar belakang dalam proses.

Untuk memulai dengan cepat dengan tugas latar belakang di luar proses, lihat Membuat dan mendaftarkan tugas latar belakang yang tidak diproses.

Tip

 Dimulai dengan Windows 10, Anda tidak perlu lagi menempatkan aplikasi di layar kunci sebagai prasyarat untuk mendaftarkan tugas latar belakang untuk itu.

Tugas latar belakang untuk peristiwa sistem

Aplikasi Anda dapat merespons peristiwa yang dihasilkan sistem dengan mendaftarkan tugas latar belakang dengan kelas SystemTrigger . Aplikasi dapat menggunakan salah satu pemicu peristiwa sistem berikut (ditentukan dalam SystemTriggerType)

Nama pemicu Deskripsi
InternetAvailable Internet menjadi tersedia.
NetworkStateChange Perubahan jaringan seperti perubahan biaya atau konektivitas terjadi.
OnlineIdConnectedStateChange ID online yang terkait dengan perubahan akun.
SmsReceived Pesan SMS baru diterima oleh perangkat broadband seluler yang diinstal.
TimeZoneChange Zona waktu berubah pada perangkat (misalnya, ketika sistem menyesuaikan jam untuk waktu musim panas).

Untuk informasi selengkapnya, lihat Merespons peristiwa sistem dengan tugas latar belakang.

Kondisi untuk tugas latar belakang

Anda dapat mengontrol kapan tugas latar belakang berjalan, bahkan setelah dipicu, dengan menambahkan kondisi. Setelah dipicu, tugas latar belakang tidak akan berjalan sampai semua kondisinya terpenuhi. Kondisi berikut (diwakili oleh enumerasi SystemConditionType ) dapat digunakan.

Nama kondisi Deskripsi
InternetAvailable Internet harus tersedia.
InternetNotAvailable Internet harus tidak tersedia.
SessionConnected Sesi harus tersambung.
SessionDisconnected Sesi harus terputus.
UserNotPresent Pengguna harus tidak di tempat.
UserPresent Pengguna harus ada.

Tambahkan kondisi InternetAvailable ke tugas latar belakang Anda BackgroundTaskBuilder.AddCondition untuk menunda memicu tugas latar belakang hingga tumpukan jaringan berjalan. Kondisi ini menghemat daya karena tugas latar belakang tidak akan dijalankan hingga jaringan tersedia. Kondisi ini tidak memberikan aktivasi real-time.

Jika tugas latar belakang Anda memerlukan konektivitas jaringan, atur IsNetworkRequested untuk memastikan bahwa jaringan tetap aktif saat tugas latar belakang berjalan. Ini memberi tahu infrastruktur tugas latar belakang untuk menjaga jaringan tetap aktif saat tugas dijalankan, bahkan jika perangkat telah memasuki mode Siaga Tersambung. Jika tugas latar belakang Anda tidak mengatur IsNetworkRequested, maka tugas latar belakang Anda tidak akan dapat mengakses jaringan saat dalam mode Siaga Tersambung (misalnya, ketika layar telepon dimatikan.) Untuk informasi selengkapnya tentang kondisi tugas latar belakang, lihat Mengatur kondisi untuk menjalankan tugas latar belakang.

Persyaratan manifes aplikasi

Sebelum aplikasi Anda berhasil mendaftarkan tugas latar belakang yang berjalan di luar proses, aplikasi harus dideklarasikan dalam manifes aplikasi. Tugas latar belakang yang berjalan dalam proses yang sama dengan aplikasi host mereka tidak perlu dideklarasikan dalam manifes aplikasi. Untuk informasi selengkapnya lihat Mendeklarasikan tugas latar belakang dalam manifes aplikasi.

Tugas latar belakang

Pemicu real-time berikut dapat digunakan untuk menjalankan kode kustom ringan di latar belakang:

Pemicu real time Deskripsi
Saluran Kontrol Tugas latar belakang dapat menjaga koneksi tetap hidup, dan menerima pesan di saluran kontrol, dengan menggunakan ControlChannelTrigger. Jika aplikasi Anda mendengarkan soket, Anda dapat menggunakan Socket Broker alih-alih ControlChannelTrigger. Untuk detail selengkapnya tentang menggunakan Socket Broker, lihat SocketActivityTrigger. ControlChannelTrigger tidak didukung di Windows Phone.
Timer Tugas latar belakang dapat berjalan sesering setiap 15 menit, dan dapat diatur untuk dijalankan pada waktu tertentu dengan menggunakan TimeTrigger. Untuk informasi selengkapnya lihat Menjalankan tugas latar belakang pada timer.
Pemberitahuan Push Tugas latar belakang merespons PushNotificationTrigger untuk menerima pemberitahuan push mentah.

Catatan  

Aplikasi Windows universal harus memanggil RequestAccessAsync sebelum mendaftarkan salah satu jenis pemicu latar belakang.

Untuk memastikan bahwa aplikasi Universal Windows Anda terus berjalan dengan benar setelah Anda merilis pembaruan, panggil RemoveAccess lalu panggil RequestAccessAsync saat aplikasi Anda diluncurkan setelah diperbarui. Untuk informasi selengkapnya, lihat Panduan untuk tugas latar belakang.

Batasan jumlah instans pemicu: Ada batasan berapa banyak instans dari beberapa pemicu yang dapat didaftarkan aplikasi. Aplikasi hanya dapat mendaftarkan ApplicationTrigger, MediaProcessingTrigger , dan DeviceUseTrigger sekali per instans aplikasi. Jika aplikasi melampaui batas ini, pendaftaran akan melemparkan pengecualian.

Pemicu peristiwa sistem

Enumerasi SystemTriggerType mewakili pemicu peristiwa sistem berikut:

Nama pemicu Deskripsi
UserPresent Tugas latar belakang dipicu ketika pengguna hadir.
UserAway Tugas latar belakang dipicu ketika pengguna menjadi tidak ada.
ControlChannelReset Tugas latar belakang dipicu saat saluran kontrol diatur ulang.
SessionConnected Tugas latar belakang dipicu saat sesi tersambung.

  Peristiwa sistem berikut memicu sinyal ketika pengguna telah memindahkan aplikasi ke dalam atau di luar layar kunci.

Nama pemicu Deskripsi
LockScreenApplicationTambahkan Petak peta aplikasi ditambahkan ke layar kunci.
LockScreenApplicationRemoved Petak peta aplikasi dihapus dari layar kunci.

 

Batasan sumber daya tugas latar belakang

Tugas latar belakang ringan. Menjaga eksekusi latar belakang tetap minimum memastikan pengalaman pengguna terbaik dengan aplikasi latar depan dan masa pakai baterai. Ini diberlakukan dengan menerapkan batasan sumber daya ke tugas latar belakang.

Tugas latar belakang dibatasi hingga 30 detik penggunaan jam dinding.

Batasan memori

Karena batasan sumber daya untuk perangkat memori rendah, tugas latar belakang mungkin memiliki batas memori yang menentukan jumlah maksimum memori yang dapat digunakan tugas latar belakang. Jika tugas latar belakang Anda mencoba operasi yang akan melebihi batas ini, operasi akan gagal dan dapat menghasilkan pengecualian di luar memori--yang dapat ditangani tugas. Jika tugas tidak menangani pengecualian di luar memori, atau sifat operasi yang dicoba sedih sehingga pengecualian di luar memori tidak dihasilkan, maka tugas akan segera dihentikan.

Anda dapat menggunakan MEMORYManager API untuk mengkueri penggunaan dan batas memori Anda saat ini untuk menemukan batas Anda (jika ada), dan untuk memantau penggunaan memori yang sedang berlangsung tugas latar belakang Anda.

Batas per perangkat untuk aplikasi dengan tugas latar belakang untuk perangkat memori rendah

Pada perangkat yang dibatasi memori, ada batasan jumlah aplikasi yang dapat diinstal pada perangkat dan menggunakan tugas latar belakang pada waktu tertentu. Jika nomor ini terlampaui, panggilan ke RequestAccessAsync, yang diperlukan untuk mendaftarkan semua tugas latar belakang, akan gagal.

Penghemat Baterai

Kecuali Anda mengecualikan aplikasi Anda sehingga masih dapat menjalankan tugas latar belakang dan menerima pemberitahuan push saat Penghemat Baterai aktif, fitur Penghemat Baterai, ketika diaktifkan, akan mencegah tugas latar belakang berjalan ketika perangkat tidak terhubung ke daya eksternal dan baterai berada di bawah jumlah daya yang ditentukan yang tersisa. Ini tidak akan mencegah Anda mendaftarkan tugas latar belakang.

Namun, untuk aplikasi perusahaan, dan aplikasi yang tidak akan diterbitkan di Microsoft Store, lihat Menjalankan di latar belakang tanpa batas waktu untuk mempelajari cara menggunakan kemampuan untuk menjalankan tugas latar belakang atau sesi eksekusi yang diperluas di latar belakang tanpa batas waktu.

Jaminan sumber daya tugas latar belakang untuk komunikasi real-time

Untuk mencegah kuota sumber daya mengganggu fungsionalitas komunikasi real-time, tugas latar belakang menggunakan ControlChannelTrigger dan PushNotificationTrigger menerima kuota sumber daya CPU yang dijamin untuk setiap tugas yang sedang berjalan. Kuota sumber daya seperti disebutkan di atas, dan tetap konstan untuk tugas latar belakang ini.

Aplikasi Anda tidak perlu melakukan sesuatu yang berbeda untuk mendapatkan kuota sumber daya yang dijamin untuk tugas latar belakang ControlChannelTrigger dan PushNotificationTrigger . Sistem selalu memperlakukan ini sebagai tugas latar belakang penting.

Pemicu pemeliharaan

Tugas pemeliharaan hanya berjalan ketika perangkat dicolokkan ke daya AC. Untuk informasi selengkapnya, lihat Menggunakan pemicu pemeliharaan.

Tugas latar belakang untuk sensor dan perangkat

Aplikasi Anda dapat mengakses sensor dan perangkat periferal dari tugas latar belakang dengan kelas DeviceUseTrigger . Anda dapat menggunakan pemicu ini untuk operasi jangka panjang seperti sinkronisasi atau pemantauan data. Tidak seperti tugas untuk peristiwa sistem, tugas DeviceUseTrigger hanya dapat dipicu saat aplikasi Anda berjalan di latar depan dan tidak ada kondisi yang dapat diatur di atasnya.

Penting

DeviceUseTrigger dan DeviceServicingTrigger tidak dapat digunakan dengan tugas latar belakang dalam proses.

Beberapa operasi perangkat penting, seperti pembaruan firmware yang berjalan lama, tidak dapat dilakukan dengan DeviceUseTrigger. Operasi tersebut hanya dapat dilakukan di PC, dan hanya oleh aplikasi istimewa yang menggunakan DeviceServicingTrigger. Aplikasi istimewa adalah aplikasi yang telah diizinkan produsen perangkat untuk melakukan operasi tersebut. Metadata perangkat digunakan untuk menentukan aplikasi mana, jika ada, yang telah ditetapkan sebagai aplikasi istimewa untuk perangkat. Untuk informasi selengkapnya, lihat Sinkronisasi dan pembaruan perangkat untuk aplikasi perangkat Microsoft Store

Mengelola tugas latar belakang

Tugas latar belakang dapat melaporkan kemajuan, penyelesaian, dan pembatalan ke aplikasi Anda menggunakan peristiwa dan penyimpanan lokal. Aplikasi Anda juga dapat menangkap pengecualian yang dilemparkan oleh tugas latar belakang, dan mengelola pendaftaran tugas latar belakang selama pembaruan aplikasi. Untuk informasi selengkapnya lihat:

Menangani tugas latar belakang yang dibatalkan
Memantau kemajuan dan penyelesaian tugas latar belakang

Periksa pendaftaran tugas latar belakang Anda selama peluncuran aplikasi. Pastikan bahwa tugas latar belakang aplikasi Anda yang tidak digrup ada di BackgroundTaskBuilder.AllTasks. Daftar ulang yang tidak ada. Batalkan pendaftaran tugas apa pun yang tidak lagi diperlukan. Ini memastikan bahwa semua pendaftaran tugas latar belakang sudah diperbarui setiap kali aplikasi diluncurkan.

Panduan konseptual untuk multitugas dalam Windows 10

Panduan tugas latar belakang terkait