WorkManager ile görev planlama Android Jetpack'in bir parçasıdır.
Kararlı çalışma için önerilen çözüm WorkManager'dır. İş ve sistem yeniden başlatıldığında programlanmış olarak kaldığında kalıcı hale gelir. Arka planda işleme sürecinin büyük bir kısmı sürekli çalışmayla elde edildiğinden, WorkManager, arka planda işleme için önerilen birincil API'dir.
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ü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.
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 |
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.
Ö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, 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) { workRequestS<aveImageToGalleryWorker(>tag = Constants.TAG_OUTPUT) } else /* upload */ { workRequestU<ploadWorker(>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 |
---|---|---|
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ş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
- Workmanager - MAD Becerileri, video serisi
- 2018 Android Dev Summit'te Work Manager ile çalışma
- 2019 Android Dev Summit'te WorkManager: Beyond the Fundamentals (WorkManager: Temel bilgilerin ötesinde)
Bloglar
ziyaret edin.Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Uygulama Başlatma