Memicu tugas latar belakang dari dalam aplikasi Anda

Pelajari cara menggunakan ApplicationTrigger untuk mengaktifkan tugas latar belakang dari dalam aplikasi Anda.

Untuk contoh cara membuat pemicu Aplikasi, lihat contoh ini.

Topik ini mengasumsikan bahwa Anda memiliki tugas latar belakang yang ingin Anda aktifkan dari aplikasi Anda. Jika Anda belum memiliki tugas latar belakang, ada contoh tugas latar belakang di BackgroundActivity.cs. Atau, ikuti langkah-langkah dalam Membuat dan mendaftarkan tugas latar belakang yang tidak diproses untuk membuatnya.

Mengapa menggunakan pemicu aplikasi

Gunakan ApplicationTrigger untuk menjalankan kode dalam proses terpisah dari aplikasi latar depan. ApplicationTrigger sesuai jika aplikasi Anda memiliki pekerjaan yang perlu dilakukan di latar belakang--bahkan jika pengguna menutup aplikasi latar depan. Jika pekerjaan latar belakang harus dihentikan saat aplikasi ditutup, atau harus terikat dengan status proses latar depan, maka Eksekusi yang Diperpanjang harus digunakan, sebagai gantinya.

Membuat pemicu aplikasi

Buat ApplicationTrigger baru. Anda dapat menyimpannya di bidang seperti yang dilakukan dalam cuplikan di bawah ini. Ini untuk kenyamanan sehingga kita tidak perlu membuat instans baru nanti ketika kita ingin memberi sinyal pemicu. Tetapi Anda dapat menggunakan instans ApplicationTrigger apa pun untuk memberi sinyal pemicu.

// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
_AppTrigger = new ApplicationTrigger();
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
Windows::ApplicationModel::Background::ApplicationTrigger _AppTrigger;
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
ApplicationTrigger ^ _AppTrigger = ref new ApplicationTrigger();

(Opsional) Menambahkan kondisi

Anda dapat membuat kondisi tugas latar belakang untuk mengontrol kapan tugas berjalan. Kondisi mencegah tugas latar belakang berjalan hingga kondisi terpenuhi. Untuk informasi selengkapnya, lihat Mengatur kondisi untuk menjalankan tugas latar belakang.

Dalam contoh ini kondisi diatur ke InternetAvailable sehingga, setelah dipicu, tugas hanya berjalan setelah akses internet tersedia. Untuk daftar kemungkinan kondisi, lihat SystemConditionType.

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

Untuk informasi lebih mendalam tentang kondisi dan jenis pemicu latar belakang, lihat Mendukung aplikasi Anda dengan tugas latar belakang.

Panggil RequestAccessAsync()

Sebelum mendaftarkan tugas latar belakang ApplicationTrigger , panggil RequestAccessAsync untuk menentukan tingkat aktivitas latar belakang yang diizinkan pengguna karena pengguna mungkin telah menonaktifkan aktivitas latar belakang untuk aplikasi Anda. Lihat Mengoptimalkan aktivitas latar belakang untuk informasi selengkapnya tentang cara pengguna dapat mengontrol pengaturan untuk aktivitas latar belakang.

var requestStatus = await Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();
if (requestStatus != BackgroundAccessStatus.AlwaysAllowed)
{
   // Depending on the value of requestStatus, provide an appropriate response
   // such as notifying the user which functionality won't work as expected
}

Mendaftarkan tugas latar belakang

Daftarkan tugas latar belakang dengan memanggil fungsi pendaftaran tugas latar belakang Anda. Untuk informasi selengkapnya tentang mendaftarkan tugas latar belakang, dan untuk melihat definisi metode RegisterBackgroundTask() dalam kode sampel di bawah ini, lihat Mendaftarkan tugas latar belakang.

Jika Anda mempertimbangkan untuk menggunakan Pemicu Aplikasi untuk memperpanjang masa pakai proses latar depan Anda, pertimbangkan untuk menggunakan Eksekusi yang Diperluas sebagai gantinya . Pemicu Aplikasi dirancang untuk membuat proses yang dihosting secara terpisah untuk melakukan pekerjaan. Cuplikan kode berikut mendaftarkan pemicu latar belakang yang tidak diproses.

string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName   = "Example application trigger";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Example application trigger" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName   = "Example application trigger";

BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);

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.

Memicu tugas latar belakang

Sebelum Anda memicu tugas latar belakang, gunakan BackgroundTaskRegistration untuk memverifikasi bahwa tugas latar belakang terdaftar. Saat yang tepat untuk memverifikasi bahwa semua tugas latar belakang Anda terdaftar adalah selama peluncuran aplikasi.

Picu tugas latar belakang dengan memanggil ApplicationTrigger.RequestAsync. Instans ApplicationTrigger apa pun akan dilakukan.

Perhatikan bahwa ApplicationTrigger.RequestAsync tidak dapat dipanggil dari tugas latar belakang itu sendiri, atau ketika aplikasi berada dalam status berjalan di latar belakang (lihat Siklus hidup aplikasi untuk informasi selengkapnya tentang status aplikasi). Ini dapat mengembalikan DisabledByPolicy jika pengguna telah menetapkan kebijakan energi atau privasi yang mencegah aplikasi melakukan aktivitas latar belakang. Selain itu, hanya satu AppTrigger yang dapat berjalan pada satu waktu. Jika Anda mencoba menjalankan AppTrigger saat yang lain sudah berjalan, fungsi akan mengembalikan CurrentlyRunning.

var result = await _AppTrigger.RequestAsync();

Mengelola sumber daya untuk tugas latar belakang Anda

Gunakan BackgroundExecutionManager.RequestAccessAsync untuk menentukan apakah pengguna telah memutuskan bahwa aktivitas latar belakang aplikasi Anda harus dibatasi. Waspadai penggunaan baterai Anda dan hanya berjalan di latar belakang ketika perlu untuk menyelesaikan tindakan yang diinginkan pengguna. Lihat Mengoptimalkan aktivitas latar belakang untuk informasi selengkapnya tentang cara pengguna dapat mengontrol pengaturan untuk aktivitas latar belakang.

  • Memori: Menyetel memori dan penggunaan energi aplikasi Anda adalah kunci untuk memastikan bahwa sistem operasi akan memungkinkan tugas latar belakang Anda berjalan. Gunakan API Manajemen Memori untuk melihat berapa banyak memori yang digunakan tugas latar belakang Anda. Semakin banyak memori yang digunakan tugas latar belakang Anda, semakin sulit bagi OS untuk menjaganya tetap berjalan ketika aplikasi lain berada di latar depan. Pengguna pada akhirnya memegang kendali atas semua aktivitas latar belakang yang dapat dilakukan aplikasi Anda dan memiliki visibilitas pada dampak yang dimiliki aplikasi Anda terhadap penggunaan baterai.
  • Waktu CPU: Tugas latar belakang dibatasi oleh jumlah waktu penggunaan jam dinding yang mereka dapatkan berdasarkan jenis pemicu. Tugas latar belakang yang dipicu oleh pemicu Aplikasi dibatasi hingga sekitar 10 menit.

Lihat Mendukung aplikasi Anda dengan tugas latar belakang untuk batasan sumber daya yang diterapkan ke tugas latar belakang.

Keterangan

Dimulai dengan Windows 10, pengguna tidak lagi perlu menambahkan aplikasi Anda ke layar kunci untuk menggunakan tugas latar belakang.

Tugas latar belakang hanya akan berjalan menggunakan ApplicationTrigger jika Anda telah memanggil RequestAccessAsync terlebih dahulu.