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

WorkManager, kararlı çalışma için önerilen çözümdür. İş, uygulamanın yeniden başlatılması ve sistemin yeniden başlatılması yoluyla programlanmış olarak kaldığında kalıcıdır. Çoğu arka plan işlemi en iyi kalıcı çalışmayla gerçekleştirildiğinden WorkManager, arka planda işleme için önerilen birincil API'dir.

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

WorkManager, üç tür kalıcı işi yönetir:

  • Hemen: Hemen başlaması ve yakında tamamlanması gereken görevler. Hızlandırılabilir.
  • Uzun Süre: Daha uzun veya 10 dakikadan daha uzun süre çalıştırılabilecek görevler.
  • Ertelenen: Daha sonra başlayan ve düzenli olarak çalışabilen planlanmış görevler.

Şekil 1, farklı kalıcı iş türlerinin birbirleriyle nasıl bir ilişki içinde olduğunu özetlemektedir.

Kalıcı işler anında, uzun süreli veya ertelenebilir olabilir
Şekil 1: Kalıcı çalışma türleri.

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

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

Çalışma sürecini hızlandırmak için OneTimeWorkRequest'te setExpedited() numaralı telefonu arayın.

Uzun Süreli Bir kerelik veya periyodik Herhangi bir WorkRequest veya Worker. Bildirimi işlemek için Çalışan bölümündeki setForeground() işlevini çağırın.
Ertelemeli Bir kerelik veya periyodik PeriodicWorkRequest ve Worker.

WorkManager'ı nasıl ayarlayacağınızla ilgili daha fazla bilgi için WorkRequest'lerinizi tanımlama kılavuzuna bakın.

Özellikler

WorkManager daha basit ve tutarlı bir API sağlamanın yanı sıra bir dizi başka önemli avantaja da sahiptir:

İşle ilgili kısıtlamalar

İş kısıtlamalarını kullanarak, çalışmanız için en uygun koşulları bildirimli şekilde tanımlayın. Örneğin, yalnızca cihaz sınırsız bir ağa bağlıyken, boştayken veya pili yeterli olduğunda çalıştırın.

Güçlü planlama

WorkManager, esnek planlama zaman aralıklarını kullanarak bir defa veya tekrarlanan şekilde çalışmak için işleri planlamanıza olanak tanır. İş aynı zamanda etiketlenebilir ve adlandırılabilir. Böylece, benzersiz ve değiştirilebilir çalışmalar planlayabilir, çalışma gruplarını birlikte izleyebilir veya iptal edebilirsiniz.

Planlanan işler dahili olarak yönetilen bir SQLite veritabanında depolanır. WorkManager, bu çalışmanın devam etmesini ve cihaz yeniden başlatmalarında yeniden planlanmasını sağlar.

Buna ek olarak WorkManager, güç tasarrufu özelliklerine ve Doz modu gibi en iyi uygulamalara bağlı kaldığı için bu konuda endişelenmeniz gerekmez.

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

WorkManager'ı kullanarak, çalışmaları arka planda hemen çalıştırılacak şekilde planlayabilirsiniz. Kullanıcı için önemli olan ve birkaç dakika içinde tamamlanan görevler için Hızlandırılmış çalışma'yı kullanmalısınız.

Esnek yeniden deneme politikası

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

İş zinciri

İlgili karmaşık işler için, hangi parçaların sıralı ve hangilerinin paralel çalışacağını kontrol etmenizi sağlayan pratik bir arayüz kullanarak bağımsız iş görevlerini birlikte zincirleyin.

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 söz konusu işle ilgili giriş ve çıkış verilerini tanımlayabilirsiniz. İşleri birbirine bağlarken WorkManager, çıkış verilerini bir iş görevinden diğerine otomatik olarak iletir.

Yerleşik ileti dizisi birlikte çalışabilirliği

WorkManager; Coroutines ve RxJava ile sorunsuz bir şekilde entegre olur ve kendi eşzamansız API'lerinizi ekleme esnekliği sunar.

Güvenilir iş için WorkManager kullanın

WorkManager; kullanıcı ekrandan ayrılsa, uygulama çıksa veya cihaz yeniden başlatılsa bile güvenilir şekilde çalışması gereken çalışmalar için tasarlanmıştır. Örneğin:

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

WorkManager, uygulama işlemi ortadan kalktığında güvenli bir şekilde sonlandırılan arka plan işleri için tasarlanmamıştır. Ayrıca anında yürütülmesi gereken tüm işler için genel bir çözüm değildir. Hangi çözümün ihtiyaçlarınızı karşıladığını görmek için lütfen arka plan işleme kılavuzunu inceleyin.

Diğer API'lerle ilişkisi

Eşlikler belirli kullanım alanları için önerilen çözüm olsa da kalıcı işler için bunları kullanmamalısınız. Eş zamanlıların bir eş zamanlılık çerçevesi olduğunu, WorkManager ise kalıcı çalışmaların kullanabileceği bir kitaplık olduğunu unutmamak önemlidir. Benzer şekilde, AlarmManager'ı yalnızca saatler ve takvimler için kullanmalısınız.

API Önerilen kullanıcılar WorkManager ile ilişki
Koritinler Kalıcı olması gerekmeyen tüm eşzamansız işler. Eş yordamlar, Kotlin'de ana iş parçacığını bırakmanın standart yoludur. Ancak uygulama kapatıldığında hafızada kalırlar. Kalıcı çalışma için WorkManager'ı kullanın.
Alarm Yöneticisi Yalnızca alarmlar için. WorkManager'ın aksine AlarmManager, cihazı Doz modundan çıkarır. Bu nedenle güç ve kaynak yönetimi açısından verimli değildir. Bu özelliği yalnızca tam alarm veya takvim etkinlikleri gibi bildirimler için kullanın, arka planda çalışırken kullanmayın.

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

WorkManager API'si; FirebaseJobDispatcher, GcmNetworkManager ve Job Scheduler gibi önceki tüm Android arka plan planlama API'lerinin yerini alması önerilir.

Başlangıç

Uygulamanızda WorkManager'ı kullanmaya başlamak için Başlangıç kılavuzuna göz atın.

Ek kaynaklar

WorkManager hakkında daha fazla bilgi için aşağıdaki kaynaklara başvurun.

Sana Özel

Videolar

Bloglar