You need to use AlarmManager
instead of Executor/handler or use a Partial Wakelock to keep the cpu on.
If cpu is in sleep mode, your app will not run until phone wakes up.
AFAIK only AlarmManager
can get you a callback by waking up the device. For this you need to use either ELAPSED_REALTIME_WAKEUP
or RTC_WAKEUP
type, other options will again result in delay.