WorkManager란?

최대환·2023년 12월 31일
0

공식문서 에 따르면

WorkManager는 지속적인 작업에 권장되는 솔루션입니다. 앱이 다시 시작되거나 시스템이 재부팅될 때 작업이 예약된 채로 남아 있으면 그 작업은 유지됩니다. 대부분의 백그라운드 처리는 지속적인 작업을 통해 가장 잘 처리되므로 WorkManager는 백그라운드 처리에 권장하는 기본 API입니다.

라고 나와있다. 잘와닿지 않으니 직접 코드를 실행가며 알아보자.


아래 코드는 1부터 10까지 카운트하는 스레드를 실행하는 예시이다.
일반적으로 스레드는 앱이 종료되면 동작을 중단하여 카운트도 중단이 된다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        SimpleThread().start()

        val workManagerA = OneTimeWorkRequestBuilder<WorManagerA>().build()
        WorkManager.getInstance(this).enqueue(workManagerA)
    }

    class SimpleThread : Thread() {

        override fun run() {
            super.run()

            for (i in 1..10) {
                Log.d("MainActivity", "$i")
                sleep(1000)
            }
        }
    }
}

하지만 workmanager를 사용하면, 앱이 종료되어도 작업을 끝까지 실행한다.

class WorManagerA(context : Context, workerParameters: WorkerParameters) :
    Worker(context, workerParameters){

    override fun doWork(): Result {

        for(i in 1..10) {
            sleep(1000)
            Log.d("WorManagerA", i.toString())
        }

        return Result.success()
    }


}

workmanager는 이렇게 앱이 종료되어도 백그라운드 작업을 쉽게 할 수 있도록 도와준다. 예약된 작업이나 작업순서 선정같은 디테일한 것도 조절할 수 있다.

profile
나의 개발지식 output 공간

0개의 댓글