Merespons peristiwa sistem dengan tugas latar belakang

API penting

Pelajari cara membuat tugas latar belakang yang merespons peristiwa SystemTrigger .

Topik ini mengasumsikan bahwa Anda memiliki kelas tugas latar belakang yang ditulis untuk aplikasi Anda, dan bahwa tugas ini perlu dijalankan sebagai respons terhadap peristiwa yang dipicu oleh sistem seperti ketika ketersediaan internet berubah atau pengguna masuk. Topik ini berfokus pada kelas SystemTrigger . Informasi selengkapnya tentang menulis kelas tugas latar belakang tersedia di Membuat dan mendaftarkan tugas latar belakang dalam proses atau Membuat dan mendaftarkan tugas latar belakang di luar proses.

Membuat objek SystemTrigger

Di kode aplikasi Anda, buat objek SystemTrigger baru. Parameter pertama, triggerType, menentukan jenis pemicu peristiwa sistem yang akan mengaktifkan tugas latar belakang ini. Untuk daftar jenis peristiwa, lihat SystemTriggerType.

Parameter kedua, OneShot, menentukan apakah tugas latar belakang hanya akan berjalan sekali lain kali peristiwa sistem terjadi atau setiap kali peristiwa sistem terjadi sampai tugas tidak terdaftar.

Kode berikut menentukan bahwa tugas latar belakang berjalan setiap kali Internet tersedia:

SystemTrigger internetTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
Windows::ApplicationModel::Background::SystemTrigger internetTrigger{
    Windows::ApplicationModel::Background::SystemTriggerType::InternetAvailable, false};
SystemTrigger ^ internetTrigger = ref new SystemTrigger(SystemTriggerType::InternetAvailable, false);

Mendaftarkan tugas latar belakang

Daftarkan tugas latar belakang dengan memanggil fungsi pendaftaran tugas latar belakang Anda. Untuk informasi selengkapnya tentang mendaftarkan tugas latar belakang, lihat Mendaftarkan tugas latar belakang.

Kode berikut mendaftarkan tugas latar belakang untuk proses latar belakang yang berjalan di luar proses. Jika Anda memanggil tugas latar belakang yang berjalan dalam proses yang sama dengan aplikasi host, Anda tidak akan mengatur entrypoint:

string entryPoint = "Tasks.ExampleBackgroundTaskClass"; // Namespace name, '.', and the name of the class containing the background task
string taskName   = "Internet-based background task";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" }; // don't set for in-process background tasks.
std::wstring taskName{ L"Internet-based background task" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass"; // don't set for in-process background tasks
String ^ taskName   = "Internet-based background task";

BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);

Catatan

Platform Windows Universal aplikasi harus memanggil RequestAccessAsync sebelum mendaftarkan salah satu jenis pemicu latar belakang.

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

Catatan

Parameter pendaftaran tugas latar belakang divalidasi pada saat pendaftaran. Kesalahan dikembalikan jika salah satu parameter pendaftaran tidak valid. Pastikan aplikasi Anda menangani skenario dengan lancar di mana pendaftaran tugas latar belakang gagal - jika sebaliknya aplikasi Anda bergantung pada memiliki objek pendaftaran yang valid setelah mencoba mendaftarkan tugas, itu mungkin crash.  

Keterangan

Untuk melihat pendaftaran tugas latar belakang dalam tindakan, unduh sampel tugas latar belakang.

Tugas latar belakang dapat berjalan sebagai respons terhadap peristiwa SystemTrigger dan MaintenanceTrigger , tetapi Anda masih perlu Mendeklarasikan tugas latar belakang dalam manifes aplikasi. Anda juga harus memanggil RequestAccessAsync sebelum mendaftarkan jenis tugas latar belakang apa pun.

Aplikasi dapat mendaftarkan tugas latar belakang yang merespons peristiwa TimeTrigger, PushNotificationTrigger, dan NetworkOperatorNotificationTrigger , memungkinkan mereka untuk memberikan komunikasi real-time dengan pengguna bahkan ketika aplikasi tidak berada di latar depan. Untuk informasi selengkapnya, lihat Mendukung aplikasi Anda dengan tugas latar belakang.