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

+ Recent posts