WorkManager'ı kullanmaya başlama

WorkManager'ı kullanmaya başlamak için önce kitaplığı Android cihazınıza aktarın belirler.

Uygulamanızın build.gradle dosyasına şu 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 yapılacak işleri tanımlamaktır.

İşi tanımlayın

İş, Worker kullanılarak tanımlanır sınıfını kullanır. doWork() yöntemi arka planda eşzamansız olarak çalışır WorkManager tarafından sağlanan iş parçacığı.

WorkManager'ın çalıştırabileceği bazı işler oluşturmak için, Worker sınıfını genişletin ve doWork() yöntemini geçersiz kıl. Örneğin, şunlara yükleyen bir Worker oluşturmak için: resim kullanıyorsanız şunları 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();
   }
}

Result doWork() öğesinden döndürülen, WorkManager hizmetine, ve başarısızlık durumunda çalışmanın uygun fiyatlı yeniden denendi.

  • Result.success(): İş başarıyla tamamlandı.
  • Result.failure(): Çalışma başarısız oldu.
  • Result.retry(): Çalışma başarısız oldu, başka bir zaman denenmesi gerekiyor ona göre yeniden deneme politikasına bakın.

Çalışma İsteği Oluşturun

Çalışmanız tanımlandıktan sonra Google Cloud Console'da WorkManager belirlemektir. WorkManager, iş verilerinizi planlama ya da planlama iş yeri. Çalışmayı çalıştırılacak şekilde düzenli aralıklarla belirli bir süre boyunca devam edebilir veya yalnızca tek bir dikkat edin.

İşi hangi şekilde planlarsanız planlayın, her zaman WorkRequest Worker iş birimini tanımlar, bir WorkRequest (ve alt sınıfları) nasıl ve ne zaman çalıştırılması gerektiğini tanımlar. En basit senaryoda, bir OneTimeWorkRequest, aşağıda gösterildiği gibidir.

Kotlin

val uploadWorkRequest: WorkRequest =
   OneTimeWorkRequestBuilderU<ploadWorker(>)
       .build()

Java

WorkRequest uploadWorkRequest =
   new OneTimeWorkRequest.Builder(UploadWorker.class)
       .build();

WorkRequest'i sisteme gönderme

Son olarak, WorkRequest öğenizi WorkManager adresine enqueue() yöntemidir.

Kotlin

WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest)

Java

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

Çalışanın yürütüleceği kesin zaman WorkRequest ve sistem optimizasyonlarında kullanılan kısıtlamalarla ilgilidir. WorkManager, bu kısıtlamalar altında en iyi davranışı sağlayacak şekilde tasarlanmıştır.

Sonraki adımlar

Bu başlangıç kılavuzu yalnızca yüzeyi çizmektedir. WorkRequest şunları yapabilir: kısıtlamalar gibi ek bilgileri de içermelidir. çalışmaya devam etmesi gerekir, işe giriş, bir gecikme ve geri alma politikası iş yeri. Bir sonraki bölümde, Çalışmanızı tanımlayın kullanıyorsanız bu seçenekler hakkında daha ayrıntılı bilgi edinecek ve ve tekrar eden işlerin nasıl planlanacağına odaklanacağız.

Ek kaynaklar

Kılavuz belgelerinin yanı sıra birkaç blog, codelab ve kod laboratuvarı bulunur. bazı örnekler var.

Örnekler

  • WorkManagerSample, basit bir görüntü işleme uygulamasıdır.
  • Yaz çiçeği, çeşitli mimarilerle ilgili en iyi uygulamaları gösteren demo uygulaması birçok bileşeni bulunur.

Codelab'ler

Bloglar