Skip to content

Instantly share code, notes, and snippets.

@dandvl
Created December 20, 2022 22:03
Show Gist options
  • Save dandvl/67a4968759b2181d6bb6f8adeba0ab8e to your computer and use it in GitHub Desktop.
Save dandvl/67a4968759b2181d6bb6f8adeba0ab8e to your computer and use it in GitHub Desktop.
Simplest WorkManager
implementation "androidx.work:work-runtime:2.7.1"
implementation "androidx.work:work-runtime-ktx:2.7.1"
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.work.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.setRequiresBatteryNotLow(true)
.setRequiresStorageNotLow(true)
.build()
val workRequest = OneTimeWorkRequestBuilder<WorkerSample>()
.setConstraints(constraints)
.build()
WorkManager
.getInstance(this@MainActivity)
.enqueue(workRequest)
WorkManager.getInstance(this@MainActivity).getWorkInfoByIdLiveData(workRequest.id)
.observe(this@MainActivity) { workInfo ->
Log.d("test", "state ${workInfo?.state}")
}
}
}
import android.content.Context
import android.util.Log
import androidx.work.Worker
import androidx.work.WorkerParameters
class WorkerSample(appContext: Context, workerParams: WorkerParameters): Worker(appContext, workerParams) {
override fun doWork(): Result {
Log.d("test", "doWork started")
Thread.sleep(5000)
Log.d("test", "doWork finished")
return Result.success()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment