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.
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.
|
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
- 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
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Uygulama Başlatma