Is applicationWillResignActive ever called before didFinishLaunchingWithOptions ends?

后端 未结 3 1928
日久生厌
日久生厌 2020-12-29 17:06

Can a scenario happen where applicationWillResignActive: will be called before application:didFinishLaunchingWithOptions: ends?

相关标签:
3条回答
  • 2020-12-29 17:22

    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]];
    }
    
    0 讨论(0)
  • 2020-12-29 17:28

    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.

    0 讨论(0)
  • 2020-12-29 17:42

    Yes -application:didFinishLaunching: will always be called before -applicationWillResignActive:

    See this image for more detail:

    enter image description here

    0 讨论(0)
提交回复
热议问题