Menggunakan pemicu pemeliharaan

API penting

Pelajari cara menggunakan kelas MaintenanceTrigger untuk menjalankan kode ringan di latar belakang saat perangkat dicolokkan.

Membuat objek pemicu pemeliharaan

Contoh ini mengasumsikan bahwa Anda memiliki kode ringan yang dapat Anda jalankan di latar belakang untuk meningkatkan aplikasi Anda saat perangkat dicolokkan. Topik ini berfokus pada MaintenanceTrigger, yang mirip dengan 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.

Buat objek MaintenanceTrigger baru. Parameter kedua, OneShot, menentukan apakah tugas pemeliharaan hanya akan berjalan sekali atau terus berjalan secara berkala. Jika OneShot diatur ke true, parameter pertama (FreshnessTime) menentukan jumlah menit untuk menunggu sebelum menjadwalkan tugas latar belakang. Jika OneShot diatur ke false, FreshnessTime menentukan seberapa sering tugas latar belakang akan berjalan.

Catatan

Jika FreshnessTime diatur ke kurang dari 15 menit, pengecualian akan dilemparkan saat mencoba mendaftarkan tugas latar belakang.

Contoh kode ini membuat pemicu yang berjalan satu jam sekali.

uint waitIntervalMinutes = 60;
MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
uint32_t waitIntervalMinutes{ 60 };
Windows::ApplicationModel::Background::MaintenanceTrigger taskTrigger{ waitIntervalMinutes, false };
unsigned int waitIntervalMinutes = 60;
MaintenanceTrigger ^ taskTrigger = ref new MaintenanceTrigger(waitIntervalMinutes, false);

(Opsional) Menambahkan kondisi

Dalam contoh ini, kondisi diatur ke InternetAvailable sehingga pemeliharaan berjalan ketika Internet tersedia (atau ketika tersedia). Untuk daftar kemungkinan kondisi tugas latar belakang, lihat SystemConditionType.

Kode berikut menambahkan kondisi ke pembuat tugas pemeliharaan:

SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition exampleCondition{
    Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ exampleCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);

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 pemeliharaan. Perhatikan bahwa ia mengasumsikan tugas latar belakang Anda berjalan dalam proses terpisah dari aplikasi Anda karena menentukan entryPoint. Jika tugas latar belakang Anda berjalan dalam proses yang sama dengan aplikasi, Anda tidak menentukan entryPoint.

string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName   = "Maintenance background task example";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Maintenance background task example" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName   = "Maintenance background task example";

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

Catatan

Untuk semua keluarga perangkat kecuali desktop, jika perangkat menjadi rendah memori, tugas latar belakang dapat dihentikan. Jika pengecualian kehabisan memori tidak muncul, atau aplikasi tidak menanganinya, maka tugas latar belakang akan dihentikan tanpa peringatan dan tanpa menaikkan peristiwa OnCanceled. Ini membantu memastikan pengalaman pengguna aplikasi di latar depan. Tugas latar belakang Anda harus dirancang untuk menangani skenario ini.

Catatan

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

Untuk memastikan bahwa aplikasi Universal Windows Terus berjalan dengan benar setelah merilis pembaruan ke aplikasi, Anda harus memanggil RemoveAccess lalu memanggil RequestAccessAsync saat aplikasi 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.