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()가 순차적(비동기식) 으로 코드가 실행된다.

'Android > WorkManager' 카테고리의 다른 글
WorkManager 주기적 실행 (0) | 2022.11.21 |
---|---|
WorkManager 작업 진행률 관찰하기 (0) | 2022.11.21 |
WorkManager Chaining (0) | 2022.11.21 |
WorkManager(SendingData,ReceiverData) (0) | 2022.11.21 |
WorkManager (0) | 2022.11.21 |