WorkManager adalah bagian dari Android Jetpack yang berfungsi untuk menjadwalkan pekerjaan latar belakang. WorkManager dapat digunakan untuk menjadwalkan pekerjaan yang harus berjalan secara asinkron, seperti pencadangan data atau download konten baru. Pekerjaan yang dijadwalkan dengan WorkManager akan terus berjalan meskipun aplikasi ditutup atau perangkat dimulai ulang. Berikut langkah-langkah implementasinya:
Buat project baru dengan jetpack compose
Tambahkan dependensi WorkManager ke file build.gradle
aplikasi Anda:
implementation( "androidx.work:work-runtime-ktx:2.8.1")
Buat file baru dan tambahkan kelas ApiCheckWorker
yang memperluas Worker
:
import android.content.Context
import androidx.work.Worker
import androidx.work.WorkerParameters
import java.net.HttpURLConnection
import java.net.URL
class ApiCheckWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
override fun doWork(): Result {
return try {
// Panggil API
val url = URL("https://api.example.com/check") // Ganti dengan URL API Anda
val connection = url.openConnection() as HttpURLConnection
connection.requestMethod = "GET"
// Periksa respons
val responseCode = connection.responseCode
if (responseCode == 200) {
// Lakukan sesuatu dengan respons (opsional)
val responseData = connection.inputStream.bufferedReader().readText()
// Proses data...
}
Result.success()
} catch (e: Exception) {
e.printStackTrace()
Result.retry() // Coba lagi jika gagal
}
}
}
Gunakan PeriodicWorkRequestBuilder
untuk menjadwalkan pekerjaan yang berulang setiap 5 menit, panggil kelas ApiCheckWorker, pada MainActivity:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import java.util.concurrent.TimeUnit
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
// UI Compose Anda
}
// Jadwalkan Worker
val workRequest = PeriodicWorkRequestBuilder<ApiCheckWorker>(5, TimeUnit.MINUTES).build()
WorkManager.getInstance(this).enqueue(workRequest)
}
}
Setelah membuat kelas apiCheckWorker dan menambahkanya ke mainActivity selanjutnya, menambahkan permission untuk mengkases internet, pada AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
Jika anda ingin memantau status WorkRequest, Kita bisa menggunakan code dibawah ini :
val workManager = WorkManager.getInstance(context) workManager.getWorkInfoByIdLiveData(workRequest.id).observe(this) { workInfo -> if (workInfo != null && workInfo.state == WorkInfo.State.SUCCEEDED) { // Worker berhasil dijalankan } }
Selamat Mencoba, Terimakasih