我发现在iPhone4 / iOS6.0设备上花了4-5秒,我想知道系统在那个时候做了什么,是否有缩短应用启动时间的最佳做法?
非常感谢。 修改
我记录它,applicationDidFinishLaunchingWithoptions
花费了大约1.5秒:
,它就像3.5-4s(我使用时钟获得精确时间)从我点击应用程序图标到其启动屏幕消失。也就是说,在调用{{1}之前启动应用程序大约需要2-2.5秒}}
答案 0 :(得分:11)
只需观看会话225 启动并运行:通过WWDC 2012为每次启动留下深刻印象,它将指导您完成应用启动的分析过程并提供最常见的提示犯了错误,很棒。
答案 1 :(得分:4)
有一个非常好的WWDC 2012视频,其长序列专门用于 这个话题:会话235(响应性)。我强烈建议你观看它。它为您提供了许多加速启动的提示和技巧(不要链接到太多的库等),告诉您如何测量以及如何在仪器中读取测量值等。
答案 2 :(得分:2)
系统不会导致您的应用需要4-5秒才能启动。它可能是您applicationDidFinishLaunching
中的代码,或init
,viewDidLoad
或根视图控制器的其他设置方法。
使用“Time Profiler”仪器在真实设备上配置您的应用。 仅启动您的应用,一旦启动,请勿按UI上的任何按钮。我们只想看看发布期间发生了什么。
我建议在窗口左下方的“调用树”下检查“按线程分离”,“反转调用树”,“隐藏系统库”和“仅显示Obj-C”选项。
检查完所选选项后,请查看方法调用列表。从花费最多时间的那些开始(出于显而易见的原因)。您可以双击符号名称以获取有关时间花费的更多详细信息。祝你好运!
答案 3 :(得分:1)
我们遇到了同样的问题。
最终,我们通过在viewDidAppear中预加载视频来显着加快启动时间。当用户点击播放按钮以启动电影时,已加载足够的内容,以便它几乎可以立即开始播放。
e.g:
- (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;
}
答案 4 :(得分:0)
在我看来,发布时间主要是功能成本,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
如果你做了很多阻止处理的东西,那么发布需要很长时间。
所以你可以通过移出一些你以后可以做的不必要的代码来优化你的applicationDidFinishLaunching
。或者,您可以将代码设置为非阻止,例如,您应该使用applicationDidFinishLaunching
中的异步网络请求而不是同步网络请求。