5

I figured out that some iOS apps are launching really faster (e.g. YouTube-from google,Skype,iTunes).

I created an empty application (used standard tabbed application template) and i did not change any code at all, just added splash images. When i tested (tried both developer and Ad-Hoc provisioning profiles to sign to check whether if there any difference), it did not launch as fast as the above mentioned apps.

When i tap the app icon on the device app icon get darker for about 0.2-0.5 seconds and then start showing splash image.

My question is how to make my app launch really fast, and is there any trick to show splash image very quickly? (i wonder how my empty application launches slower than above mentioned apps?)

Thanks

marko
  • 9,029
  • 4
  • 30
  • 46
  • 3
    The key is not to do the loading in the `applicationDidFinishLaunching:` However if you've just got an empty application then that should be the fastest launching app on your device. I'd chalk it up to dev debugging slowing you down. – Ryan Poolos Jan 26 '13 at 17:45
  • @OP Which iOS version and iOS device are you using because I cannot reproduce the lag time mentioned by Matt on iOS 6 with an iPod touch 5G. – Jack G. Jan 26 '13 at 18:54
  • im using iOS 6 and iPhone 4 – Chathuranga Jayawardhana Jan 26 '13 at 19:39
  • @ChathurangaJayawardhana, for the record, I did reproduce the problem using your configuration. – Jack G. Jan 27 '13 at 20:41

3 Answers3

2

I think you also may be falling for a trick: at least for the iTunes app, Apple is overwriting the splash image with one that looks very much like the app while running, which creates the illusion that the app loads immediately. Try it:

Launch iTunes (or "Music") and start it playing, then go do something else to cause the system to swap the process out as much as possible (say, browse some heavy websites). Then relaunch iTunes and immediately try to pause the audio. On my iPhone 4, it takes about 3 seconds before the controls catch up: the position indicator will jump to the correct location, and until that time, the "play" button is inactive - you can't pause the audio. You're seeing a splash image that is meant to make you think that the app is launching immediately, even though it's really taking a few seconds to launch.

I've also noticed Chrome for iOS doing the same thing. I actually dislike this design decision, because it communicates that the app is ready before you can do anything with it.

Matt
  • 10,434
  • 1
  • 36
  • 45
  • 1
    Actually it probably has more to do with debugging and optimization enabled in release – Richard J. Ross III Jan 26 '13 at 17:55
  • 2
    Just a side note. I actually do something like this, as Apple suggests it. However I agree with @Matt. It makes your app seem unresponsive, so what I do is take the "default" image, and darken it quite a bit, and then when the app is ready, it lightens up. I think it gives it a really nice feel. – Josiah Jan 26 '13 at 17:56
  • I found many apps doing overwriting splash image, but how they do it, is there a way to display an splash before calling applicationDidFinishLaunching: any ideas ? – Chathuranga Jayawardhana Jan 27 '13 at 06:08
1

i did not changed any code at all just added splash images

The loading images are not intended to show splash images, they are intended to show a static version of your application's interface to give the illusion that your application is loading more quickly than it really is.

Splash images are specifically warned against by Apple in the HIG.

Stop abusing loading images to show splash images, start using them properly, and your application will look as if it is loading more quickly.

Jim
  • 72,985
  • 14
  • 101
  • 108
0

link to as few frameworks as possible, we tried this at WWDC and linking to many frameworks creates a noticeable delay even before the main() method is called!

no matter how fast your code itself is!

Daij-Djan
  • 49,552
  • 17
  • 113
  • 135