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ı
- WorkManager (Kotlin) ve (Java) ile çalışma
- Gelişmiş WorkManager (Kotlin)
Bloglar
- WorkManager ile tanışın
- WorkManager ile ilgili temel bilgiler
- WorkManager ve Kotlin
- WorkManager Dönemselliği
- WorkManager'ı özelleştirme - Temel bilgiler
- WorkManager'ı Dagger ile özelleştirme