WorkManager ile görev planlama Android Jetpack'in bir parçasıdır.

Kararlı çalışma için önerilen çözüm WorkManager'dır. Uygulamaların ve sistemin yeniden başlatılması sırasında planlandığı şekilde devam eden işler kalıcı olur. Arka planda işleme işlemlerinin çoğu en iyi şekilde kararlı çalışma ile gerçekleştirildiği için arka planda işleme için önerilen birincil API WorkManager'dır.

Kalıcı çalışma türleri

WorkManager üç tür kalıcı çalışmayı yönetir:

  • Anlık: Hemen başlatılması ve kısa süre içinde tamamlanması gereken görevler. Olabilir hızlandırıldı.
  • Uzun Süreli: Daha uzun süreli (potansiyel olarak 10'dan fazla) görevler dakika.
  • Ertelenen: Daha sonra başlayan ve çalıştırılabilen planlanmış görevler düzenli olarak.

Şekil 1'de farklı kalıcı çalışma türlerinin tek bir çalışmayla ilişkisi özetlenmektedir başka bir tane.

Kalıcı çalışmalar hemen, uzun süreli ya da sonradan yürütülebilir
Şekil 1: Kalıcı çalışma türleri.

Benzer şekilde, aşağıdaki tabloda çeşitli iş türleri özetlenmiştir.

Tür Dönemlik Nasıl erişilir?
Derhal Bir kerelik OneTimeWorkRequest ve Worker.

Hızlandırılmış işler için OneTimeWorkRequest'ten setExpedited() numaralı telefonu arayın.

Uzun süreli Tek seferlik veya periyodik Herhangi bir WorkRequest veya Worker. Bildirimi işlemek için Çalışan'da setForeground() adlı kişiyi arayın.
Ertelenebilir Tek seferlik veya dönemsel PeriodicWorkRequest ve Worker.

WorkManager'ın nasıl kurulacağı hakkında daha fazla bilgi için bkz. WorkRequests rehberini inceleyin.

Özellikler

WorkManager, daha basit ve tutarlı bir API sağlamanın yanı sıra, başka önemli faydaları vardır:

İş kısıtlamaları

Çalışmanızın yürütülmesi için en uygun koşulları iş kullanarak bildirin kısıtlamalar ekleyin. Örneğin, yalnızca cihaz ölçüm yapılmayan bir cihazda olduğunda çalıştırın ağ, cihaz boşta kaldığında veya yeterli pile sahip olduğunda.

Güçlü planlama

WorkManager, esnek planlama aralıkları kullanarak çalışmaları tek seferlik veya tekrar tekrar çalıştıracak şekilde planlamanıza olanak tanır. İşler etiketlenebilir ve adlandırılabilir. Bu sayede benzersiz ve değiştirilebilir işler planlayabilir, iş gruplarını birlikte izleyebilir veya iptal edebilirsiniz.

Planlanan çalışmalar dahili olarak yönetilen SQLite veritabanında depolanır ve WorkManager, bu işin devam etmesini ve yeniden planlanmasını sağlar çok daha iyi performans gösterir.

Bunun yanı sıra, WorkManager, güç tasarrufu özelliklerini ve en iyi uygulamalarını takip eder Doz modu gibi özelliklerdir; bu nedenle endişelenmenize gerek yoktur.

Hızlandırılmış çalışma

Şurada yürütülecek şekilde hemen iş planlamak için WorkManager'ı kullanabilirsiniz: arka plan. Gerçekleştirmeniz gereken görevler için Hızlandırılmış çalışmalar birkaç dakika içinde tamamlanır.

Esnek yeniden deneme politikası

Bazen işler başarısız olur. WorkManager, yapılandırılabilir bir eksponansiyel geri yükleme politikası da dahil olmak üzere esnek yeniden deneme politikaları sunar.

İş zinciri

Karmaşık bir bağlantılı işler için, aşağıdakilerden birini kullanarak bağımsız iş görevlerini zincir halinde birbirine bağlayın. hangi parçaların sıralı ve düzgün çalıştığını kontrol etmenizi sağlayan sezgisel arayüz birbirine paralel olarak çalışır.

Kotlin

val continuation = WorkManager.getInstance(context)
    .beginUniqueWork(
        Constants.IMAGE_MANIPULATION_WORK_NAME,
        ExistingWorkPolicy.REPLACE,
        OneTimeWorkRequest.from(CleanupWorker::class.java)
    ).then(OneTimeWorkRequest.from(WaterColorFilterWorker::class.java))
    .then(OneTimeWorkRequest.from(GrayScaleFilterWorker::class.java))
    .then(OneTimeWorkRequest.from(BlurEffectFilterWorker::class.java))
    .then(
        if (save) {
            workRequest<SaveImageToGalleryWorker>(tag = Constants.TAG_OUTPUT)
        } else /* upload */ {
            workRequest<UploadWorker>(tag = Constants.TAG_OUTPUT)
        }
    )

Java

WorkManager.getInstance(...)
.beginWith(Arrays.asList(workA, workB))
.then(workC)
.enqueue();

Her iş görevi için, o işe ait giriş ve çıkış verilerini tanımlayabilirsiniz. Zincirleme birlikte çalışırken WorkManager çıkış verilerini otomatik olarak atfedebilirsiniz.

Yerleşik iş parçacığı oluşturma birlikte çalışabilirliği

WorkManager, Coroutines ve RxJava ile sorunsuz entegre olur ve kendi eşzamansız API'lerinizi ekleme esnekliği sağlar.

Güvenilir bir çalışma için WorkManager'ı kullanın

WorkManager, aşağıdaki durumlarda bile güvenilir bir şekilde çalışması gereken işler için tasarlanmıştır: Kullanıcı ekrandan ayrıldığında, uygulamadan çıktığında veya cihaz yeniden başlatıldığında. Örneğin, örnek:

  • Günlükleri veya analizleri arka uç hizmetlerine gönderme.
  • Uygulama verilerini bir sunucuyla düzenli olarak senkronize etme.

WorkManager, güvenli bir şekilde düzeltilebilecek işlem içi arka plan çalışmaları için tasarlanmamıştır uygulama işlemi kaldırılırsa sonlandırılır. Ayrıca, proje yöneticisi olarak ve hemen yürütülmesini gerektiren tüm işler. Lütfen arka planı inceleyin işleme rehberine göz atın.

Diğer API'lerle olan ilişki

Eş yordamlar belirli kullanım durumları için önerilen çözüm olsa da kalıcı çalışma için kullanmayın. Eş yordamların, bir teknolojinin tutarlılık çerçevesidir. WorkManager ise sürekli çalışma için kullanılan bir kitaplıktır. Benzer şekilde, AlarmManager'ı yalnızca saatler veya takvimler için kullanmanız gerekir.

API Önerilen kullanımlar WorkManager ile ilişki
Komut sıraları Kalıcı olması gerekmeyen tüm asenkron işler. Eş yordamlar, Kotlin'de ana iş parçacığından ayrılmanın standart yoludur. Ancak uygulama kapatıldığında bellekte kalırlar. Kalıcı iş için WorkManager'ı kullanın.
AlarmManager Yalnızca alarmlar. WorkManager'ın aksine AlarmManager, cihazı Doz modundan uyandırır. Bu nedenle güç ve kaynak yönetimi açısından verimli değildir. Bu özelliği yalnızca takvim etkinlikleri gibi hassas alarmlar ve bildirimler için kullanın, arka planda çalışmak için kullanmayın.

Kullanımdan kaldırılan API'leri değiştirme

WorkManager API, önceki tüm Android cihazları için önerilen alternatiftir Firebase JobDispatcher gibi arka plan planlama API'leri ve GcmNetworkManager ve İş Planlayıcı.

Başlarken

WorkManager'ı cihazınızda kullanmaya başlamak içinBaşlangıç kılavuzuna uygulamasını indirin.

Ek kaynaklar

WorkManager hakkında daha fazla bilgi için aşağıdaki konulara bakın kaynaklar.

Örnekler

Videolar

Bloglar