Can a scenario happen where applicationWillResignActive:
will be called before application:didFinishLaunchingWithOptions:
ends?
The runloop can be called recursively.
A hypothetical implementation of application:disFinishLaunchigWithOptions:
could run the runloop which, in turn, would allow for notification delivery from within the method.
The following contrived example would let the run loop run, yet never return:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
while (YES)
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
Apple's iOS App Programming Guide in the "App States and Multitasking" Section, indicates applicationWillResignActive:
is called as part of your application's handling of events through processing the run loop, which only begins after application:didFinishLaunchingWithOptions:
has finished.
Furthermore, application lifecycle events always happen on the main thread, so it wouldn't be possible for one of them to pre-empt the other or run in parallel with each other.
Yes -application:didFinishLaunching:
will always be called before -applicationWillResignActive:
See this image for more detail: