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.
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 |
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
- Workmanager - MAD Becerileri, video dizisi
- Working with WorkManager, 2018 Android Dev Summit'te
- WorkManager: Temel bilgilerin ötesinde, 2019 Android Dev Summit'ten
Bloglar
Sizin için önerilenler
- Not: Bağlantı metni JavaScript kapalıyken gösterilir
- Uygulama Başlatma