In the current implementation of the StartupViewController, the processing is tightly coupled with its visualisation. This has the following downsides:
UIKit supports presenting modal view controllers only one after the other. We are currently migrating to the UI state preservation and restoration API, here the startup view controller will be presented as the last after all others; this means that the presentation (and also the processing) of startup view controller must wait till all others are setup and their animation finished.
Moreover, we don't even get a trigger from UIKit when this is done.
* As the startup view controller processing affects all databases, all other view controllers must wait for this processing to finish before they can load data from any database.
All this results in unnecessary and undesired delays till the app is operational.
Diff: