WorkManager'ı kullanmaya başlamak için önce kitaplığı Android projenize aktarın.
Uygulamanızın build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:
Modern
dependencies { def work_version = "2.12.0" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.12.0" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Bağımlılıkları ekleyip Gradle projenizi senkronize ettikten sonraki adım, çalıştırılacak bir iş tanımlamaktır.
İşi tanımlama
İş, Worker sınıfı kullanılarak tanımlanır. doWork() yöntemi, WorkManager tarafından sağlanan bir arka plan iş parçacığında eşzamansız olarak çalışır.
WorkManager'ın çalıştıracağı bir iş oluşturmak için Worker sınıfını genişletin ve doWork() yöntemini geçersiz kılın. Örneğin, resim yükleyen bir Worker oluşturmak için aşağıdakileri yapabilirsiniz:
Kotlin
class UploadWorker(appContext: Context, workerParams: WorkerParameters): Worker(appContext, workerParams) { override fun doWork(): Result { // Do the work here--in this case, upload the images. uploadImages() // Indicate whether the work finished successfully with the Result return Result.success() } }
Java
public class UploadWorker extends Worker { public UploadWorker( @NonNull Context context, @NonNull WorkerParameters params) { super(context, params); } @Override public Result doWork() { // Do the work here--in this case, upload the images. uploadImages(); // Indicate whether the work finished successfully with the Result return Result.success(); } }
doWork() tarafından döndürülen Result, WorkManager hizmetine işin başarılı olup olmadığını ve başarısızlık durumunda işin yeniden denenip denenmeyeceğini bildirir.
Result.success(): İş başarıyla tamamlandı.Result.failure(): İş başarısız oldu.Result.retry(): İş başarısız oldu ve yeniden deneme politikasına göre başka bir zaman denenmelidir.
WorkRequest oluşturma
İşiniz tanımlandıktan sonra çalıştırılabilmesi için WorkManager hizmetiyle planlanması gerekir. WorkManager, işlerinizi planlama konusunda size büyük esneklik sağlar. Belirli bir zaman aralığında periyodik olarak çalışacak şekilde veya yalnızca bir kez çalışacak şekilde planlayabilirsiniz.
Çalışmayı nasıl planlarsanız planlayın her zaman bir WorkRequest kullanırsınız. Worker, iş birimini tanımlarken WorkRequest (ve alt sınıfları) bu işin nasıl ve ne zaman çalıştırılacağını tanımlar. En basit durumda, aşağıdaki örnekte gösterildiği gibi bir OneTimeWorkRequest kullanabilirsiniz.
Kotlin
val uploadWorkRequest: WorkRequest = OneTimeWorkRequestBuilder<UploadWorker>() .build()
Java
WorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class) .build();
WorkRequest'i sisteme gönderme
Son olarak, enqueue() yöntemini kullanarak WorkRequest öğenizi WorkManager adresine göndermeniz gerekir.
Kotlin
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest)
Java
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest);
Çalışanın tam olarak ne zaman yürütüleceği, WorkRequest uygulamanızda kullanılan kısıtlamalara ve sistem optimizasyonlarına bağlıdır.
WorkManager, bu kısıtlamalar altında en iyi davranışı sunacak şekilde tasarlanmıştır.
Sonraki adımlar
Bu başlangıç kılavuzu, konuya yalnızca yüzeysel olarak değinmektedir. WorkRequest, çalışmanın yürütülmesi gereken kısıtlamalar, çalışmaya giriş, gecikme ve çalışmayı yeniden denemek için geri çekilme politikası gibi ek bilgiler de içerebilir. Bir sonraki bölümde, İş taleplerinizi tanımlama, bu seçenekler hakkında daha ayrıntılı bilgi edinecek ve benzersiz ve yinelenen işlerin nasıl planlanacağını anlayacaksınız.
Ek kaynaklar
Başlamanıza yardımcı olacak kılavuz dokümanlarının yanı sıra çeşitli bloglar ve codelab'ler de mevcuttur.
Codelab uygulamaları
- WorkManager ile çalışma (Kotlin) ve (Java)
- Gelişmiş WorkManager (Kotlin)
Bloglar
- WorkManager'a giriş
- WorkManager ile ilgili temel bilgiler
- WorkManager ve Kotlin
- WorkManager Periodicity
- WorkManager'ı Özelleştirme - Temel Bilgiler
- WorkManager'ı Dagger ile özelleştirme