Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSTimer continue during sleep mode

Tags:

sleep

nstimer

I have a timer app which uses a NSTimer to track minutes. How can I keep the timer going, even when the device is put into sleep mode? Thanks!

like image 754
PanicDev Avatar asked Feb 15 '23 13:02

PanicDev


1 Answers

Adjust After Wake Notification

Scheduled NSTimer instances will halt during sleep. Your application needs to respond to the NSWorkspace's wake notification and adjust its timers.

If you do not respond to wake notifications, your timers will resume but without accounting for the time spent asleep.

See Apple's technical note QA1340 Registering and unregistering for sleep and wake notifications for getting the appropriate notifications.

Example

Consider this situation:

  • Create a timer to trigger in 5 minutes
  • Wait 1 minute
  • Put the computer to sleep for an hour
  • Wake the computer
  • The timer resumes upon waking
  • The timer triggers 4 minutes after waking

From the timer's perspective, five minutes has passed by. Note the language used by NSTimer, it uses relative durations rather than absolute times, scheduledTimerWithTimeInterval:invocation:repeats:.

like image 59
Graham Miln Avatar answered Mar 03 '23 14:03

Graham Miln