Bagikan melalui


Mengakses sensor dan perangkat dari tugas latar belakang

DeviceUseTrigger memungkinkan aplikasi Universal Windows Anda mengakses sensor dan perangkat periferal di latar belakang, bahkan ketika aplikasi latar depan Anda ditangguhkan. Misalnya, bergantung pada tempat aplikasi Anda berjalan, aplikasi dapat menggunakan tugas latar belakang untuk menyinkronkan data dengan perangkat atau sensor monitor. Untuk membantu mempertahankan masa pakai baterai dan memastikan persetujuan pengguna yang sesuai, penggunaan DeviceUseTrigger tunduk pada kebijakan yang dijelaskan dalam topik ini.

Untuk mengakses sensor atau perangkat periferal di latar belakang, buat tugas latar belakang yang menggunakan DeviceUseTrigger. Untuk contoh yang menunjukkan bagaimana hal ini dilakukan pada PC, lihat sampel perangkat USB Kustom. Misalnya di ponsel, lihat sampel Sensor Latar Belakang.

Penting

DeviceUseTrigger tidak dapat digunakan dengan tugas latar belakang dalam proses. Info dalam topik ini hanya berlaku untuk tugas latar belakang yang kehabisan proses.

Gambaran umum tugas latar belakang perangkat

Saat aplikasi Anda tidak lagi terlihat oleh pengguna, Windows akan menangguhkan atau menghentikan aplikasi Anda untuk mengklaim kembali memori dan sumber daya CPU. Ini memungkinkan aplikasi lain untuk berjalan di latar depan dan mengurangi konsumsi baterai. Ketika ini terjadi, tanpa bantuan tugas latar belakang, setiap peristiwa data yang sedang berlangsung akan hilang. Windows menyediakan pemicu tugas latar belakang, DeviceUseTrigger, untuk memungkinkan aplikasi Anda melakukan operasi sinkronisasi dan pemantauan yang berjalan lama pada perangkat dan sensor dengan aman di latar belakang, bahkan jika aplikasi Anda ditangguhkan. Untuk informasi selengkapnya tentang siklus hidup aplikasi, lihat Meluncurkan, memulai kembali, dan tugas latar belakang. Untuk informasi selengkapnya tentang tugas latar belakang, lihat Mendukung aplikasi Anda dengan tugas latar belakang.

Catatan Di aplikasi Universal Windows, menyinkronkan perangkat di latar belakang mengharuskan pengguna Anda telah menyetujui sinkronisasi latar belakang oleh aplikasi Anda. Perangkat juga harus terhubung atau dipasangkan dengan PC, dengan I/O aktif, dan diizinkan maksimal 10 menit aktivitas latar belakang. Detail selengkapnya tentang penegakan kebijakan dijelaskan nanti dalam topik ini.

Batasan: operasi perangkat penting

Beberapa operasi perangkat penting, seperti pembaruan firmware yang berjalan lama, tidak dapat dilakukan dengan DeviceUseTrigger. Operasi tersebut hanya dapat dilakukan pada 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.

Protokol/API yang didukung dalam tugas latar belakang DeviceUseTrigger

Tugas latar belakang yang menggunakan DeviceUseTrigger memungkinkan aplikasi Anda berkomunikasi melalui banyak protokol/API, yang sebagian besar tidak didukung oleh tugas latar belakang yang dipicu sistem. Berikut ini didukung pada aplikasi Universal Windows.

Protokol DeviceUseTrigger di aplikasi Universal Windows
USB protokol ini didukung.
HID protokol ini didukung.
Bluetooth RFCOMM protokol ini didukung.
Bluetooth GATT protokol ini didukung.
MTP protokol ini didukung.
Jaringan berkabel protokol ini didukung.
Wi-Fi Jaringan protokol ini didukung.
IDeviceIOControl deviceservicingtrigger mendukung ideviceiocontrol
API Sensor deviceservicingtrigger mendukung api sensor universal (terbatas pada sensor dalam keluarga perangkat universal)

Mendaftarkan tugas latar belakang dalam manifes paket aplikasi

Aplikasi Anda akan melakukan operasi sinkronisasi dan pembaruan dalam kode yang berjalan sebagai bagian dari tugas latar belakang. Kode ini disematkan di kelas Runtime Windows yang mengimplementasikan IBackgroundTask (atau di halaman JavaScript khusus untuk aplikasi JavaScript). Untuk menggunakan tugas latar belakang DeviceUseTrigger , aplikasi Anda harus mendeklarasikannya dalam file manifes aplikasi dari aplikasi latar depan, seperti yang dilakukan untuk tugas latar belakang yang dipicu sistem.

Dalam contoh file manifes paket aplikasi ini, DeviceLibrary.SyncContent adalah titik masuk untuk tugas latar belakang yang menggunakan DeviceUseTrigger.

<Extensions>
  <Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
    <BackgroundTasks>
      <m2:Task Type="deviceUse" />
    </BackgroundTasks>
  </Extension>
</Extensions>

Pengantar menggunakan DeviceUseTrigger

Untuk menggunakan DeviceUseTrigger, ikuti langkah-langkah dasar ini. Untuk informasi selengkapnya tentang tugas latar belakang, lihat Mendukung aplikasi Anda dengan tugas latar belakang.

  1. Aplikasi Anda mendaftarkan tugas latar belakangnya di manifes aplikasi dan menyematkan kode tugas latar belakang di kelas Windows Runtime yang mengimplementasikan IBackgroundTask atau di halaman JavaScript khusus untuk aplikasi JavaScript.
  2. Saat aplikasi Anda dimulai, aplikasi akan membuat dan mengonfigurasi objek pemicu jenis DeviceUseTrigger, dan menyimpan instans pemicu untuk digunakan di masa mendatang.
  3. Aplikasi Anda memeriksa apakah tugas latar belakang telah didaftarkan sebelumnya dan, jika tidak, mendaftarkannya terhadap pemicu. Perhatikan bahwa aplikasi Anda tidak diizinkan untuk mengatur kondisi pada tugas yang terkait dengan pemicu ini.
  4. Saat aplikasi Anda perlu memicu tugas latar belakang, aplikasi harus terlebih dahulu memanggil RequestAccessAsync untuk memeriksa apakah aplikasi dapat meminta tugas latar belakang.
  5. Jika aplikasi dapat meminta tugas latar belakang, aplikasi memanggil metode aktivasi RequestAsync pada objek pemicu perangkat.
  6. Tugas latar belakang Anda tidak dibatasi seperti tugas latar belakang sistem lainnya (tidak ada kuota waktu CPU) tetapi akan berjalan dengan prioritas yang berkurang untuk menjaga aplikasi latar depan tetap responsif.
  7. Windows kemudian akan memvalidasi, berdasarkan jenis pemicu, bahwa kebijakan yang diperlukan telah terpenuhi, termasuk meminta persetujuan pengguna untuk operasi sebelum memulai tugas latar belakang.
  8. Windows memantau kondisi sistem dan runtime tugas dan, jika perlu, membatalkan tugas jika kondisi yang diperlukan tidak lagi terpenuhi.
  9. Saat tugas latar belakang melaporkan kemajuan atau penyelesaian, aplikasi Anda akan menerima peristiwa ini melalui kemajuan dan menyelesaikan peristiwa pada tugas terdaftar.

Penting Pertimbangkan poin-poin penting ini saat menggunakan DeviceUseTrigger:

  • Kemampuan untuk secara terprogram memicu tugas latar belakang yang menggunakan DeviceUseTrigger pertama kali diperkenalkan di Windows 8.1 dan Windows Phone 8.1.

  • Kebijakan tertentu diberlakukan oleh Windows untuk memastikan persetujuan pengguna saat memperbarui perangkat periferal di PC.

  • Polisi tambahan diberlakukan untuk mempertahankan masa pakai baterai pengguna saat menyinkronkan dan memperbarui perangkat periferal.

  • Tugas latar belakang yang menggunakan DeviceUseTrigger mungkin dibatalkan oleh Windows ketika persyaratan kebijakan tertentu tidak lagi terpenuhi, termasuk jumlah waktu latar belakang maksimum (waktu jam dinding). Penting untuk mempertimbangkan persyaratan kebijakan ini saat menggunakan tugas latar belakang ini untuk berinteraksi dengan perangkat periferal Anda.

Tips Untuk melihat cara kerja tugas latar belakang ini, unduh sampel. Untuk contoh yang menunjukkan bagaimana hal ini dilakukan pada PC, lihat sampel perangkat USB Kustom. Misalnya di ponsel, lihat sampel Sensor Latar Belakang.  

Pembatasan frekuensi dan latar depan

Tidak ada batasan frekuensi aplikasi Anda dapat memulai operasi, tetapi aplikasi Anda hanya dapat menjalankan satu operasi tugas latar belakang DeviceUseTrigger sekaligus (ini tidak memengaruhi jenis tugas latar belakang lainnya), dan dapat memulai tugas latar belakang hanya saat aplikasi Anda berada di latar depan. Saat aplikasi Anda tidak berada di latar depan, aplikasi tidak dapat memulai tugas latar belakang dengan DeviceUseTrigger. Aplikasi Anda tidak dapat memulai tugas latar belakang DeviceUseTrigger kedua sebelum tugas latar belakang pertama selesai.

Pembatasan perangkat

Meskipun setiap aplikasi terbatas pada pendaftaran dan hanya menjalankan satu tugas latar belakang DeviceUseTrigger, perangkat (tempat aplikasi Anda berjalan) dapat memungkinkan beberapa aplikasi untuk mendaftar dan menjalankan tugas latar belakang DeviceUseTrigger. Bergantung pada perangkat, mungkin ada batasan jumlah total tugas latar belakang DeviceUseTrigger dari semua aplikasi. Ini membantu mempertahankan baterai pada perangkat yang dibatasi sumber daya. Lihat tabel berikut ini untuk detail selengkapnya.

Dari satu tugas latar belakang DeviceUseTrigger , aplikasi Anda dapat mengakses sejumlah perangkat periferal atau sensor yang tidak terbatas - hanya dibatasi oleh API dan protokol yang didukung yang tercantum dalam tabel sebelumnya.

Kebijakan tugas latar belakang

Windows memberlakukan kebijakan saat aplikasi Anda menggunakan tugas latar belakang DeviceUseTrigger. Jika kebijakan ini tidak terpenuhi, tugas latar belakang mungkin dibatalkan. Penting untuk mempertimbangkan persyaratan kebijakan ini saat menggunakan jenis tugas latar belakang ini untuk berinteraksi dengan perangkat atau sensor.

Kebijakan inisiasi tugas

Tabel ini menunjukkan kebijakan inisiasi tugas mana yang berlaku untuk aplikasi Universal Windows.

Kebijakan DeviceUseTrigger di aplikasi Universal Windows
Aplikasi Anda berada di latar depan saat memicu tugas latar belakang. kebijakan berlaku
Perangkat dilampirkan ke sistem (atau dalam rentang untuk perangkat nirkabel). kebijakan berlaku
Perangkat dapat diakses oleh aplikasi menggunakan API periferal perangkat yang didukung (API Runtime Windows untuk USB, HID, Bluetooth, Sensor, dan sebagainya). Jika aplikasi Anda tidak dapat mengakses perangkat atau sensor, akses ke tugas latar belakang ditolak. kebijakan berlaku
Titik entri tugas latar belakang yang disediakan oleh aplikasi terdaftar dalam manifes paket aplikasi. kebijakan berlaku
Hanya satu tugas latar belakang DeviceUseTrigger yang berjalan per aplikasi. kebijakan berlaku
Jumlah maksimum tugas latar belakang DeviceUseTrigger belum tercapai di perangkat (tempat aplikasi Anda berjalan). Keluarga perangkat desktop: Jumlah tugas yang tidak terbatas dapat didaftarkan dan dijalankan secara paralel. Keluarga perangkat seluler: 1 tugas pada perangkat 512 MB; jika tidak, 2 tugas dapat didaftarkan dan dijalankan secara paralel.
Jumlah maksimum perangkat periferal atau sensor yang dapat diakses aplikasi Anda dari satu tugas latar belakang DeviceUseTrigger , saat menggunakan API/protokol yang didukung. tidak terbatas
Tugas latar belakang Anda menggunakan waktu CPU 400ms (dengan asumsi CPU 1GHz) setiap menit ketika layar dikunci, atau setiap 5 menit ketika layar tidak dikunci. Kegagalan untuk memenuhi kebijakan ini dapat mengakibatkan pembatalan tugas Anda. kebijakan berlaku

Pemeriksaan kebijakan runtime

Windows memberlakukan persyaratan kebijakan runtime berikut saat tugas Anda berjalan di latar belakang. Jika salah satu persyaratan runtime berhenti benar, Windows akan membatalkan tugas latar belakang perangkat Anda.

Tabel ini menunjukkan kebijakan runtime mana yang berlaku untuk aplikasi Universal Windows.

Pemeriksaan kebijakan DeviceUseTrigger di aplikasi Universal Windows
Perangkat dilampirkan ke sistem (atau dalam rentang untuk perangkat nirkabel). pemeriksaan kebijakan berlaku
Tugas melakukan I/O reguler ke perangkat (1 I/O setiap 5 detik). pemeriksaan kebijakan berlaku
Aplikasi belum membatalkan tugas. pemeriksaan kebijakan berlaku
Batas waktu jam dinding – jumlah total waktu tugas aplikasi Anda dapat berjalan di latar belakang. Keluarga perangkat desktop: 10 menit. Keluarga perangkat seluler: Tidak ada batas waktu. Untuk menghemat sumber daya, tidak lebih dari 1 atau 2 tugas dapat dijalankan sekaligus.
Aplikasi belum keluar. pemeriksaan kebijakan berlaku

Praktik terbaik

Berikut ini adalah praktik terbaik untuk aplikasi yang menggunakan tugas latar belakang DeviceUseTrigger.

Memprogram tugas latar belakang

Menggunakan tugas latar belakang DeviceUseTrigger dari aplikasi Anda memastikan bahwa operasi sinkronisasi atau pemantauan apa pun yang dimulai dari aplikasi latar depan Anda terus berjalan di latar belakang jika pengguna Anda beralih aplikasi dan aplikasi latar depan Anda ditangguhkan oleh Windows. Kami menyarankan agar Anda mengikuti model keseluruhan ini untuk mendaftarkan, memicu, dan membatalkan pendaftaran tugas latar belakang Anda:

  1. Panggil RequestAccessAsync untuk memeriksa apakah aplikasi dapat meminta tugas latar belakang. Ini harus dilakukan sebelum mendaftarkan tugas latar belakang.

  2. Daftarkan tugas latar belakang sebelum meminta pemicu.

  3. Sambungkan penanganan aktivitas kemajuan dan penyelesaian ke pemicu Anda. Saat aplikasi Anda kembali dari penangguhan, Windows akan memberi aplikasi Anda peristiwa kemajuan atau penyelesaian antrean yang dapat digunakan untuk menentukan status tugas latar belakang Anda.

  4. Tutup perangkat terbuka atau objek sensor saat Anda memicu tugas latar belakang DeviceUseTrigger sehingga perangkat atau sensor tersebut bebas dibuka dan digunakan oleh tugas latar belakang Anda.

  5. Daftarkan pemicu.

  6. Pertimbangkan dengan cermat dampak baterai untuk mengakses perangkat atau senor dari tugas latar belakang. Misalnya, memiliki interval laporan sensor yang berjalan terlalu sering dapat menyebabkan tugas berjalan begitu sering sehingga dengan cepat menguras baterai ponsel.

  7. Ketika tugas latar belakang Anda selesai, batalkan pendaftaran.

  8. Daftar untuk peristiwa pembatalan dari kelas tugas latar belakang Anda. Mendaftar untuk peristiwa pembatalan akan memungkinkan kode tugas latar belakang Anda untuk menghentikan tugas latar belakang yang berjalan dengan bersih saat dibatalkan oleh Windows atau aplikasi latar depan Anda.

  9. Saat aplikasi keluar (bukan penangguhan), batalkan pendaftaran dan batalkan tugas yang sedang berjalan jika aplikasi Anda tidak lagi membutuhkannya. Pada sistem yang dibatasi sumber daya, seperti ponsel memori rendah, ini akan memungkinkan aplikasi lain untuk menggunakan tugas latar belakang DeviceUseTrigger.

    • Saat aplikasi Anda keluar, batalkan pendaftaran dan batalkan tugas yang sedang berjalan.

    • Saat aplikasi Anda keluar, tugas latar belakang Anda akan dibatalkan dan penanganan aktivitas yang ada akan terputus dari tugas latar belakang yang ada. Ini mencegah Anda menentukan status tugas latar belakang Anda. Membatalkan pendaftaran dan membatalkan tugas latar belakang akan memungkinkan kode pembatalan Anda menghentikan tugas latar belakang Anda dengan bersih.

Membatalkan tugas latar belakang

Untuk membatalkan tugas yang berjalan di latar belakang dari aplikasi latar depan Anda, gunakan metode Batalkan pendaftaran pada objek BackgroundTaskRegistration yang Anda gunakan di aplikasi Anda untuk mendaftarkan tugas latar belakang DeviceUseTrigger. Membatalkan pendaftaran tugas latar belakang Anda dengan menggunakan metode Batalkan pendaftaran pada BackgroundTaskRegistration akan menyebabkan infrastruktur tugas latar belakang membatalkan tugas latar belakang Anda.

Metode Batalkan pendaftaran juga mengambil nilai benar atau salah Boolean untuk menunjukkan apakah saat ini menjalankan instans tugas latar belakang Anda harus dibatalkan tanpa mengizinkannya selesai. Untuk informasi selengkapnya, lihat referensi API untuk Membatalkan pendaftaran.

Selain Batalkan pendaftaran, aplikasi Anda juga harus memanggil BackgroundTaskDeferral.Complete. Ini menginformasikan sistem bahwa operasi asinkron yang terkait dengan tugas latar belakang telah selesai.