Skip to content

Instantly share code, notes, and snippets.

@MostafaGad1911
Created July 15, 2023 16:10
Show Gist options
  • Save MostafaGad1911/8c242fe6f4205f0a38948bff465fdf10 to your computer and use it in GitHub Desktop.
Save MostafaGad1911/8c242fe6f4205f0a38948bff465fdf10 to your computer and use it in GitHub Desktop.
package gad.samples.periodicworkmanager
import android.content.Context
import android.os.Bundle
import androidx.work.Constraints
import androidx.work.CoroutineWorker
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.NetworkType
import androidx.work.PeriodicWorkRequest
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.WorkerParameters
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import java.util.concurrent.TimeUnit
class UploadRawFileWorker constructor(context: Context, workerParams: WorkerParameters) :
CoroutineWorker(context, workerParams) {
override suspend fun doWork(): Result {
val bundle = Bundle()
return try {
withContext(Dispatchers.IO) {
Result.success()
}
} catch (e: Exception) {
Result.failure()
}
}
companion object {
private const val JOB_ID = 3020
fun enqueueWork(context: Context) {
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val periodicWorkManagerRequest: PeriodicWorkRequest =
PeriodicWorkRequestBuilder<UploadRawFileWorker>(1, TimeUnit.DAYS)
.setConstraints(constraints)
.addTag(JOB_ID.toString())
.build()
WorkManager
.getInstance(context)
.enqueueUniquePeriodicWork(
JOB_ID.toString(),
ExistingPeriodicWorkPolicy.KEEP,
periodicWorkManagerRequest
)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment