2012-11-27 35 views
5

我发现它在iPhone4/iOS6.0设备上花了4-5秒钟,我想知道当时系统在做什么,是否有任何最佳做法来缩短应用程序的启动时间?iPhone/iOS:缩短应用程序启动时间的最佳做法?

非常感谢。

编辑: 我登录它,它在applicationDidFinishLaunchingWithoptions了1.5s左右: ,它是像3.5-4s(我使用的时钟,以获得更加精密时间)从我点击应用程序图标,其推出屏幕disappear.That是说,约2-2.5s调用applicationDidFinishLaunchingWithoptions

+1

这是不太可能的体系正在逐步4-5秒 - 多少你有你'的applicationDidFinishLaunching ...'怎么回事? – Tommy

回答

11

仅仅是观看会话225 运行起来:从WWDC 2012制作一个大印象与每次启动,它会带你通过剖析你的应用程序启动的过程,并就最常犯的错误提示,这是伟大的。

2

该系统是不是出了什么导致你的应用程序需要4-5秒发动之前,启动应用程序。这可能是您的代码applicationDidFinishLaunchinginit,viewDidLoad或您的根视图控制器的其他设置方法。

使用'Time Profiler'工具在真实设备上剖析您的应用。 只有启动您的应用程序,启动后不要按任何按钮。我们只想看看发布过程中发生了什么。

我会建议在窗口左下角的“调用树”下检查'通过线程分离','反转调用树','隐藏系统库'和'仅显示对象C'选项。

一旦你检查了你所选择的选项,沿着方法调用列表。从花费最多时间开始(出于显而易见的原因)。您可以双击符号名称以获取有关花费时间的更详细信息。祝你好运!

4

有一个非常非常好的WWDC 2012视频,其中很长的序列专门用于,正好是该主题:会话235(响应)。我强烈建议你看。它给你很多提示和技巧,对于加快推出(不链接到太多的库等),告诉你如何衡量,如何读取仪器的测量等

0

在我看来,推出时间主要花费在功能上,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 

如果你做了一堆东西其中块的过程,这将需要很长时间发射。

所以,你可以通过移动了一些不必要的代码,您可以稍后优化applicationDidFinishLaunching。或者你可以使你的代码无阻塞,例如,你应该在applicationDidFinishLaunching中使用异步网络请求,而不是同步网络请求。

1

我们遇到了同样的问题。

最终,我们加快了推出的时间显著堆载预压在viewDidAppear视频。当用户点击播放按钮启动电影时,已经加载了足够的内容,以便它几乎可以立即开始播放。

例如:

- (void)viewDidAppear:(BOOL)animated { 
    NSURL *movieURL = [NSURL URLWithString:@"http://static.example.com/movie.mov"]; 
    MPMoviePlayerViewController *vc = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL]; 
    vc.moviePlayer.shouldAutoplay = NO; 
    [vc.moviePlayer prepareToPlay]; 
    self.moviePlayerViewController = vc; 
} 

全部细节在这篇博客文章:http://blog.tetherpad.com/blog/2013/3/22/improving-tutorial-movie-load-times-on-ios-for-fun-and-profit

+0

也许你可以在'application:didFinishLaunchingWithOptions:'后台加载你的视频,它早于你的视图控制器的'viewDidAppear',这样它就不会阻塞主线程。 – Gon

相关问题