WorkManager'ı kullanmaya başlama

WorkManager'ı kullanmaya başlamak için öncelikle kitaplığı Android projenize aktarın.

Aşağıdaki bağımlılıkları uygulamanızın build.gradle dosyasına ekleyin:

Modern

dependencies {
    def work_version = "2.9.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.9.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 sonra, sıradaki adım çalışacak bazı işler 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ışmasını amacıyla bazı çalışmalar 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() öğesinden döndürülen Result, WorkManager hizmetine işin başarılı olup olmadığını ve başarısızlık 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 zaman denenmelidir.

İş İsteği Oluştur

Çalışmanız tanımlandıktan sonra, çalışması için WorkManager hizmetiyle planlanmalıdır. WorkManager, çalışmanızı planlarken büyük esneklik sunar. Etkinliği, bir zaman aralığı boyunca düzenli aralıklarla çalışacak şekilde planlayabilir veya yalnızca bir kez çalışacak şekilde planlayabilirsiniz.

Çalışmayı planlamayı seçerseniz her zaman bir WorkRequest kullanırsınız. Worker iş birimini tanımlarken, WorkRequest (ve alt sınıfları) işin nasıl ve ne zaman çalıştırılması gerektiğini 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 için göndermeniz gerekir.

Kotlin


WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest)

Java


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

Çalışanın tam olarak yürütüleceği süre, WorkRequest dosyanızda kullanılan kısıtlamalara ve sistem optimizasyonlarına bağlıdır. WorkManager, bu kısıtlamalar kapsamında en iyi davranışı sağlamak için tasarlanmıştır.

Sonraki adımlar

Bu başlangıç kılavuzu yalnızca yüzeyleri çizer. WorkRequest, çalışmanın çalışması gereken kısıtlamalar, işe giriş, gecikme ve çalışmanın yeniden denenmesi için geri çekilme politikası gibi ek bilgiler de içerebilir. Bir sonraki İş taleplerinizi tanımlama bölümünde, bu seçenekler hakkında daha ayrıntılı bilgi edinecek ve benzersiz ve tekrarlanan işleri nasıl planlayacağınız konusunda bilgi edineceksiniz.

Ek kaynaklar

Kılavuz belgelerinin yanı sıra başlamanıza yardımcı olacak çeşitli bloglar, codelab'ler ve kod örnekleri de vardır.

Sana Özel

Codelab uygulamaları

Bloglar