Kalıcı çalışma Android Jetpack'in bir parçasıdır.

İş, uygulamanın yeniden başlatılması ve sistem tarafından planlanması durumunda kalıcıdır yeniden başlatılır. Kararlı çalışma için önerilen çözüm WorkManager'dır. Arka planda işleme sürecinin büyük bir kısmı sürekli çalışmayla elde edildiğinden, WorkManager ayrıca arka plan bilgisi için önerilen birincil API'dir işlemden ibaret değildir.

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

WorkManager, üç tür kalıcı çalışma gerçekleştirir:

  • 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üre devam edebilecek görevler 10 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 Periyodiklik Erişim yöntemi
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.
Ertelenen Tek seferlik veya periyodik PeriodicWorkRequest ve Worker.

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

WorkManager Özellikleri

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, bir seferlik veya tek seferlik ya da tekrarlayın. İşler etiketlenebilir ve adlandırılabilir aynı zamanda size benzersiz ve değiştirilebilir bir iş zamanlamanızı ve bu çalışmaları takip ya da nasıl empatiyle yaklaşabileceğinizi konuşacağız.

Planlanan çalışmalar dahili olarak yönetilen SQLite veritabanında depolanır 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, aşağıdakiler de dahil olmak üzere esnek yeniden deneme politikaları sunar: yapılandırılabilir bir üstel geri yükleme politikası vardır.

İş 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 bazı kullanım durumları için önerilen çözüm olsa da ve bunları ısrarlı iş için kullanmamalısınız. Eş yordamların bir eşzamanlılık çerçevesi, WorkManager ise iş yeri. Benzer şekilde, AlarmManager'ı yalnızca saatler veya takvimler için kullanmanız gerekir.

API Şunlar için önerilir: WorkManager ile ilişki
Koordinler Kalıcı olması gerekmeyen tüm eşzamansız çalışmalar. 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'dan farklı olarak, AlarmManager bir 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ştirin

WorkManager API, önceki tüm Android cihazları için önerilen alternatiftir FirebaseJobDispatcher dahil olmak üzere arka plan planlama API'leri, GcmNetworkManager ve JobScheduler.

Başlayın

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

Ek kaynaklar

Aşağıdaki bölümlerde bazı ek kaynaklar sağlanmaktadır.

Videolar

Bloglar

Örnekler