Jalankan di latar belakang tanpa batas waktu

Untuk memberikan pengalaman terbaik bagi pengguna, Windows memberlakukan batas sumber daya pada aplikasi Platform Windows Universal (UWP). Aplikasi latar depan diberi memori dan waktu eksekusi terbanyak; aplikasi latar belakang menjadi lebih sedikit. Pengguna dengan demikian terlindungi dari performa aplikasi latar depan yang buruk dan pengurasan baterai berat.

Namun, pengembang yang menulis aplikasi UWP untuk penggunaan pribadi (yaitu, aplikasi yang dimuat samping yang tidak akan diterbitkan di Microsoft Store), atau pengembang yang menulis aplikasi Enterprise UWP, mungkin ingin menggunakan semua sumber daya yang tersedia di perangkat tanpa latar belakang atau pembatasan eksekusi yang diperluas. Lini aplikasi UWP bisnis dan pribadi dapat menggunakan API di Windows Creators Update (versi 1703) untuk menonaktifkan pembatasan. Ketahuilah bahwa Anda tidak dapat memasukkan aplikasi ke Microsoft Store jika menggunakan API ini.

Jalankan saat diminimalkan

Aplikasi UWP pindah ke status ditangguhkan saat tidak berjalan di latar depan. Di desktop, ini terjadi ketika pengguna meminimalkan aplikasi. Aplikasi menggunakan sesi eksekusi yang diperluas untuk terus berjalan saat diminimalkan. API eksekusi yang diperluas yang diterima oleh Microsoft Store dirinci dalam Menunda penangguhan aplikasi dengan eksekusi yang diperpanjang.

Jika Anda mengembangkan aplikasi yang tidak dimaksudkan untuk dikirimkan ke Microsoft Store, maka Anda dapat menggunakan ExtendedExecutionForegroundSession dengan extendedExecutionUnconstrained kemampuan terbatas sehingga aplikasi Anda dapat terus berjalan saat diminimalkan, terlepas dari status energi perangkat.  

Kemampuan extendedExecutionUnconstrained ditambahkan sebagai kemampuan terbatas dalam manifes aplikasi Anda. Lihat Deklarasi kemampuan aplikasi untuk informasi selengkapnya tentang kemampuan terbatas.

Catatan

Tambahkan deklarasi namespace XML xmlns:rescap , dan gunakan awalan rescap untuk mendeklarasikan kemampuan.

Untuk informasi selengkapnya, lihat bagian Kemampuan Terbatas dari deklarasi Kemampuan aplikasi.

Package.appxmanifest

<Package
    ...
    xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
    IgnorableNamespaces="uap mp rescap">
  ...
  <Capabilities>
    <rescap:Capability Name="extendedExecutionUnconstrained"/>
  </Capabilities>
</Package>

Saat Anda menggunakan kemampuan ini extendedExecutionUnconstrained , ExtendedExecutionForegroundSession dan ExtendedExecutionForegroundReason digunakan daripada ExtendedExecutionSession dan ExtendedExecutionReason. Pola yang sama untuk membuat sesi, mengatur anggota, dan meminta ekstensi secara asinkron masih berlaku:

var newSession = new ExtendedExecutionForegroundSession();
newSession.Reason = ExtendedExecutionForegroundReason.Unconstrained;
newSession.Description = "Long Running Processing";
newSession.Revoked += SessionRevoked;
ExtendedExecutionForegroundResult result = await newSession.RequestExtensionAsync();
switch (result)
{
    case ExtendedExecutionForegroundResult.Allowed:
        DoLongRunningWork();
        break;

    default:
    case ExtendedExecutionForegroundResult.Denied:
        DoShortRunningWork();
        break;
}

Anda dapat meminta sesi eksekusi yang diperpanjang ini segera setelah aplikasi datang ke latar depan. Sesi eksekusi yang diperpanjang yang tidak dibatasi tidak dibatasi oleh kuota energi atau oleh penghemat baterai sistem operasi. Selama referensi ke objek sesi ada, aplikasi akan tetap dalam status berjalan dan tidak memasuki status ditangguhkan. Jika aplikasi ditutup oleh pengguna, sesi akan dicabut.

Mendaftar untuk peristiwa Dicabut akan memungkinkan aplikasi Anda untuk melakukan pekerjaan pembersihan apa pun yang diperlukan. Dalam status penangguhan, Anda dapat membuat sesi eksekusi yang diperluas dengan ExtendedExecutionReason.SavingData untuk menyimpan data pengguna sebelum aplikasi dihentikan dan dihapus dari memori.

Menjalankan tugas latar belakang tanpa batas waktu

Dalam Platform Windows Universal, tugas latar belakang adalah proses yang berjalan di latar belakang tanpa bentuk antarmuka pengguna. Tugas latar belakang umumnya dapat berjalan selama maksimum dua puluh lima detik sebelum dibatalkan. Beberapa tugas yang berjalan lebih lama juga memiliki pemeriksaan untuk memastikan bahwa tugas latar belakang tidak menganggur atau menggunakan memori. Dalam Windows Creators Update (versi 1703), kemampuan extendedBackgroundTaskTime yang dibatasi diperkenalkan untuk menghapus batas ini. Kemampuan extendedBackgroundTaskTime ditambahkan sebagai kemampuan terbatas dalam file manifes aplikasi Anda:

Catatan

Tambahkan deklarasi namespace XML xmlns:rescap , dan gunakan awalan rescap untuk mendeklarasikan kemampuan.

Untuk informasi selengkapnya, lihat bagian Kemampuan Terbatas dari deklarasi Kemampuan aplikasi.

Package.appxmanifest

<Package
    ... 
    xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
    IgnorableNamespaces="uap mp rescap">
...
  <Capabilities>
    <rescap:Capability Name="extendedBackgroundTaskTime"/>
  </Capabilities>
</Package>

Kemampuan ini menghapus batasan waktu eksekusi dan pengawas tugas menganggur. Setelah tugas latar belakang dimulai, baik oleh pemicu atau panggilan layanan aplikasi, setelah diperlukan penangguhan pada BackgroundTaskInstance yang disediakan oleh metode Jalankan , itu dapat berjalan tanpa batas waktu. Jika aplikasi diatur ke Dikelola Oleh Windows, maka mungkin masih memiliki kuota energi yang diterapkan padanya, dan tugas latar belakangnya tidak akan diaktifkan saat Penghemat Baterai aktif. Ini dapat diubah dengan pengaturan OS. Informasi selengkapnya tersedia dalam Mengoptimalkan Aktivitas Latar Belakang.

Platform Windows Universal memantau eksekusi tugas latar belakang untuk memastikan masa pakai baterai yang baik dan pengalaman aplikasi latar depan yang lancar. Namun, aplikasi pribadi dan aplikasi Lini Bisnis Perusahaan dapat menggunakan eksekusi yang diperluas dan kemampuan extendedBackgroundTaskTime untuk membuat aplikasi yang akan berjalan selama diperlukan terlepas dari ketersediaan sumber daya perangkat.

Ketahuilah bahwa kemampuan extendedExecutionUnconstrained dan extendedBackgroundTaskTime dapat mengambil alih kebijakan default untuk aplikasi UWP dan dapat menyebabkan pengurasan baterai yang signifikan. Sebelum menggunakan kemampuan ini, pertama-tama konfirmasikan bahwa eksekusi diperpanjang default dan kebijakan waktu tugas latar belakang tidak memenuhi kebutuhan Anda dan melakukan pengujian dalam kondisi yang dibatasi baterai untuk memahami dampak yang akan ditimbulkan aplikasi Anda pada perangkat.

Lihat juga

Menghapus pembatasan sumber daya tugas latar belakang