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.
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
- Workmanager - MAD Becerileri, video serisi
- 2018 Android Dev Summit'te Work Manager ile çalışma
- WorkManager: Beyond the Fundamentals (WorkManager: Temel bilgilerin ötesinde), 2019 Android Dev Zirve