WorkManager'ı kullanmaya başlama

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:

Eski

dependencies {
    def work_version = "2.9.1"

    // (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.9.1"

    // (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 sonra, çalıştırılacak bazı çalışmaları tanımlamanız gerekir.

Çalışmayı tanımlama

Çalışma, 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 çalışmanın başarılı olup olmadığını ve başarısız olması durumunda çalışmanın yeniden denenip denenmeyeceğini bildirir.

  • Result.success(): Çalışma başarıyla tamamlandı.
  • Result.failure(): Çalışma başarısız oldu.
  • Result.retry(): İş başarısız oldu ve yeniden deneme politikasına göre başka bir zamanda denenmelidir.

WorkRequest oluşturma

Çalışmanız tanımlandıktan sonra çalışabilmesi için WorkManager hizmetiyle planlanmalıdır. WorkManager, çalışmanızı planlama konusunda size çok fazla esneklik sunar. Bu raporu belirli bir zaman aralığında düzenli olarak çalıştırılacak veya yalnızca bir kez çalıştırılacak şekilde planlayabilirsiniz.

İşi nasıl planlamayı seçerseniz seçin her zaman bir WorkRequest kullanırsınız. Worker, iş birimini tanımlarken WorkRequest (ve alt sınıfları) bu birimin 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, WorkRequest dosyanızı WorkManager'a enqueue() yöntemini kullanarak göndermeniz gerekir.

Kotlin

WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest)

Java

WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest);

İşleyicinin tam olarak ne zaman çalıştırılacağı, WorkRequest dosyanı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, Google Ads'in sunduğu olanakların yalnızca bir kısmını kapsar. WorkRequest, işin çalıştırılması gereken kısıtlamalar, işe verilen giriş, gecikme ve işi yeniden denemeye yönelik geri çekilme politikası gibi ek bilgiler de içerebilir. Bir sonraki bölümde, İş isteklerinizi tanımlama başlıklı bölümde bu seçenekler hakkında daha ayrıntılı bilgi edinecek ve benzersiz ve yinelenen işlerin nasıl planlanacağını öğreneceksiniz.

Ek kaynaklar

Kılavuz dokümanlarına ek olarak, başlamanıza yardımcı olacak çeşitli bloglar, codelab'ler ve kod örnekleri de mevcuttur.

Örnekler

  • WorkManager dahil olmak üzere çeşitli mimari bileşenleriyle ilgili en iyi uygulamaları gösteren bir demo uygulaması olan Sunflower.

Codelab uygulamaları

Bloglar