What is the best way to schedule a brief task from an already running background service?

105 Views Asked by At

I have implemented a NotificationListenerService that runs in the background.

From this services onNotificationPosted method, I would like to be able to queue work to happen in 2 minutes time.

What is the best way to go about this?

Both JobScheduler and Workmanager have a minimum interval of 15 minutes. Because I already have a background service running, I don't think I really need to use those, correct?

Could I just use something like a TimerTask, or even a sleep in my onNotificationPosted method?

1

There are 1 best solutions below

1
Andrei Shpakovskiy On BEST ANSWER

WorkManager has 15 minutes interval only for periodic tasks, thats is not what you want, as I can see. You can schedule task with OneTimeWorkRequest to let it be executed in 2 minutes after the onNotificationPosted method call.

As you already have running service, you can probably just delay your task in separate coroutine scope

launch {
    delay(2 * 60 * 1000)
    yourTask()
}

or use

handler.postDelayed(2 * 60 * 1000) {
    yourTask()
}