Android/WorkManager
WorkManager + Coroutine
${Harvey}
2022. 11. 21. 22:27
build.gradle
implementation("androidx.work:work-runtime-ktx:2.7.1")
MainActivity.kt
// WorkManager + Coroutine
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val workManager = OneTimeWorkRequestBuilder<WorkManager2>().build()
WorkManager.getInstance(this).enqueue(workManager)
}
}
WorkManager1.kt
class WorkManager1(context : Context, workerParameters: WorkerParameters) : Worker(context, workerParameters){
override fun doWork(): Result {
return Result.success()
}
}
WorkManager2.kt
class WorkManager2(context : Context, params : WorkerParameters) : CoroutineWorker(context, params){
override suspend fun doWork(): Result {
withContext(Dispatchers.IO){
test1()
test2()
}
return Result.success()
}
suspend fun test1() {
for(i in 1..3) {
delay(1000)
Log.d("WorkManager2 test1", i.toString())
}
}
suspend fun test2() {
for(i in 1..3) {
delay(1000)
Log.d("WorkManager2 test2", i.toString())
}
}
}
결과: Coroutine을 사용하여 test1(),test2()가 순차적(비동기식) 으로 코드가 실행된다.
