WorkManager ile Arka Planda Görev Planlama: Pratik Örnekler

# WorkManager ile Arka Planda Görev Planlama: Pratik Örnekler

Android'de arka plan işleri güvenilir biçimde çalıştırmak zorlu bir konudur. İşletim sistemi, pil tasarrufu için uygulamaları durdurabilir, cihaz yeniden başlayabilir veya ağ kopabilir. WorkManager, Google tarafından önerilen çözüm; sistem kaynakları gözetince görevlerinizi zamanında tamamlamasını sağlar.

WorkManager, uygulamanız kapatılsa bile arka planda çalışması gereken işleri (veri senkronizasyonu, raporlama, yedekleme) yönetir. Tek seferlik görevler ve periyodik görevler destekler. Sistem, cihazın durumuna (WiFi bağlantısı, pil seviyesi) göre en uygun zamanı seçer.

`build.gradle` dosyasına ekleyin:

dependencies { implementation "androidx.work:work-runtime-ktx:2.8.1" }

Arkada çalışacak işi tanımlayan sınıf:

import androidx.work.Worker import androidx.work.WorkerParameters import android.content.Context

class DataSyncWorker(context: Context, params: WorkerParameters): Worker(context, params) {
override fun doWork(): Result {
return try {
// Veri senkronizasyonu yap
val data = fetchDataFromServer()
saveToDatabase(data)
Result.success()
} catch (e: Exception) {
Result.retry() // Başarısızsa tekrar dene
}
}

private fun fetchDataFromServer(): String {
return "Sunucudan alınan veri"
}

private fun saveToDatabase(data: String) {
// Veritabanına kaydet
}
}

Her 15 dakikada bir çalışacak görev:

import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkManager import java.util.concurrent.TimeUnit

val syncRequest = PeriodicWorkRequestBuilder<DataSyncWorker>(
15, TimeUnit.MINUTES
).build()

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"data_sync",
ExistingPeriodicWorkPolicy.KEEP,
syncRequest
)

Belirli bir gecikmeyle bir kez çalışacak görev:

[kod]
import androidx.work.OneTimeWorkRequestBuilder

val oneTimeRequest = OneTimeWorkRequestBuilder<DataSyncWorker>().setInitialDelay(10, TimeUnit.MINUTES).build()

WorkManager.getInstance(context).enqueueUniqueWork(
"one_time_sync",
ExistingWorkPolicy.KEEP,
oneTimeRequest
)[/cod]

Görev planlandıktan sonra WorkManager, sistem koşullarına göre uygun zamanı bekler. Cihaz çalışırken ve ağ bağlıyken görev çalışır. Başarısız olursa otomatik olarak yeniden dener.

- Minimum periyod 15 dakikadır; daha kısa süreler kullanılamaz.
- `ExistingPeriodicWorkPolicy.KEEP` ile aynı görev birden fazla kez planlanmaz.
- Ağ, pil veya cihaz durumu koşulu eklemek için `Constraints` kullanın.
- WorkManager, cihaz yeniden başlasa bile görevleri kaybetmez.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz