2012-11-27 8 views
5

iPhone4/iOS6.0デバイスで4〜5秒かかりましたが、その時にシステムが何をしているのか知りたいのですが、アプリの起動時間を短縮するベストプラクティスはありますか?iPhone/iOS:アプリの起動時間を短縮するベストプラクティスですか?

多くのありがとう。

EDIT: 私はそれをログに記録し、それがapplicationDidFinishLaunchingWithoptionsでは約1.5秒を要した。その打ち上げにアプリのアイコンをタップし 、そしてそれは私から(私はプリサイサ時間を取得するためにクロックを使用)3.5-4sのようなものです画面が消える。すなわち、約2〜2.5秒前にアプリを起動するapplicationDidFinishLaunchingWithoptions

+1

それは、システムが4-5秒を取っているそうだ - どのくらいあなたは 'applicationDidFinishLaunching ...'で何が起こっていますか? – Tommy

答えて

11

単にセッション225 起動して実行を見て:WWDC 2012から毎週打ち上げグレート印象を作り、それはアプリの立ち上げをプロファイリングするプロセスを通してあなたを取ると、最も頻繁に犯した過ちについてのヒントを与えるだろう、それは素晴らしいことです。

2

あなたのアプリは、起動に4-5秒かかることはありません。おそらくあなたのコードはapplicationDidFinishLaunchinginitviewDidLoad、またはその他のルートビューコントローラの設定方法です。

アプリを実際のデバイスにプロファイルするには、 'Time Profiler' Instrumentを使用します。 アプリを起動するだけで、起動後にUIのボタンを押さないでください。私たちは、打ち上げ中に何が起こっているのか見たいだけです。

ウィンドウの左下にある[呼び出しツリー]の下にある[スレッドで区切る]、[呼び出しツリーを反転する]、[システムライブラリを非表示にする]、[Obj-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:'のバックグラウンドで読み込むことができます。これは、あなたのView Controllerの 'viewDidAppear'より早いので、メインスレッドをブロックしません。 – Gon

関連する問題