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
- WorkManagerSample'ı seçin.
- Sunflower'ı tıklayın.
Codelab uygulamaları
- WorkManager (Kotlin) ve (Java) ile çalışma
- Gelişmiş WorkManager (Kotlin)
Bloglar
- WorkManager ile tanışın
- WorkManager ile İlgili Temel Bilgiler
- WorkManager ve Kotlin
- WorkManager Dönemselliği
- WorkManager'ı Özelleştirme - Temel Bilgiler
- WorkManager'ı Dagger ile Özelleştirme