WorkManager의 주기적 실행

최대환·2024년 1월 1일
0

내가 어떤 로직을 15분이나, 1시간, 하루마다 반복적으로 실행하고 싶을때는 어떡해야할까?
아래 코드와 같이 workManager가 실행되면 현재날짜와 시각이 찍히도록 하였다.

class WorkManagerTest(context : Context, params : WorkerParameters) : CoroutineWorker(context, params) {

    override suspend fun doWork(): Result {

        Log.d("WorkManagerTest", "doWork")

        val format = SimpleDateFormat("hh:mm:ss")
        val currentTime = format.format(Date())

        Log.d("WorkManagerTest", currentTime)

        return Result.success()

    }

}

이 workmanager를 15분마다 실행시키고 싶으면 PeriodicWorkRequestBuilder를 사용하면된다. 아래 코드는 WorkManagerTest 작업을 15분마다 실행하도록 설정했습니다.

class MainActivity : AppCompatActivity() {

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

        val workManagerTest = PeriodicWorkRequestBuilder<WorkManagerTest>(15, TimeUnit.MINUTES).build()
        WorkManager.getInstance(this).enqueue(workManagerTest)

    }
}

이렇게 설정하면 15분마다 WorkManagerTest 작업이 실행되며, 로그를 통해 현재 시간을 확인할 수 있습니다.

단, 주의할 점은 WorkManager의 최소 간격이 15분이라는 것입니다. 15분보다 짧은 시간 간격으로 설정하려고 하면 WorkManager는 이를 무시하고 15분 간격으로 작업을 실행합니다.

profile
나의 개발지식 output 공간

0개의 댓글