Interesting. As you said OS may honour the app refresh requests even if the app is terminated. But if OS tries to launch the app in background then during the app launch in the appDidFinishLaunching method, the same BGAppRefreshTask would get registered again and most probably would be scheduled again. Since the same task gets rescheduled again, i am wondering how will the launchHandler of the task execute at this point in time.