Android/WorkManager

WorkManager

${Harvey} 2022. 11. 21. 22:06

 

  • WorkManager
    • WorkManager는 안드로이드 백그라운드 작업을 처리하는 방법 중 하나이며 Android Jetpack 아키텍처 구성 요소중 하나이다.
    • 앱이 종료되거나 기기가 다시 시작되어도 실행 예정인, 지연 가능한 비동기 작업을 쉽게 예약할 수 있도록 해준다.
    • 주로 사용자가 나가거나 하더라도 오래걸리는 작업(Calendar 동기화, 이미지 프로세싱)등에 쓰인다.

 

 

build.gradle

//WorkManager
    implementation("androidx.work:work-runtime-ktx:2.7.1")
 
 

MainActivity.kt

 

// https://developer.android.com/topic/libraries/architecture/workmanager
// https://developer.android.com/codelabs/android-workmanager#0

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

        SimpleThread().start()

        val workManagerA = OneTimeWorkRequestBuilder<WorkManagerA>().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)
        }

    }


}
 

WorkManagerA

class WorkManagerA(context : Context, workerParameters : WorkerParameters) : Worker(context,workerParameters) {
    override fun doWork(): Result {

        for(i in 1..10){

            sleep(1000)
            Log.d("WorkManagerA",i.toString())

        }


        return Result.success()

    }
}
 

 

결과 : 처음엔 로그에 둘다 찍힌다.

 

 

앱 종료시 WorkManager의 로그만 찍힌다.