2012-11-27 12 views
5

मुझे लगता है कि आईफोन 4/आईओएस 6.0 डिवाइस पर 4-5 सेकंड लग गए, और मैं जानना चाहता हूं कि उस समय सिस्टम क्या कर रहा है, क्या ऐप के लॉन्च टाइम को कम करने के लिए कोई सर्वोत्तम प्रथा है?आईफोन/आईओएस: ऐप के लॉन्च टाइम को कम करने के लिए सर्वोत्तम अभ्यास?

बहुत धन्यवाद।

संपादित करें: मैं इसे लॉग इन करें और यह applicationDidFinishLaunchingWithoptions में 1.5s के बारे में ले लिया: , और यह (मैं एक preciser समय पाने के लिए एक घड़ी का इस्तेमाल किया) मैं से 3.5-4s की तरह है अपनी शुरुआत करने के लिए ऐप्लिकेशन आइकन टैप स्क्रीन disappear.That के बारे में 2-2.5s बुला applicationDidFinishLaunchingWithoptions

+1

यह संभावना नहीं प्रणाली 4-5 सेकंड ले जा रहा है है - आप कितना अपने 'applicationDidFinishLaunching ...' में क्या हो रहा है? – Tommy

उत्तर

11

सीधे शब्दों में सत्र 225 ऊपर देख सकते हैं और चल रहा है: WWDC 2012 से हर लॉन्च के साथ एक महान छाप बनाना, यह आप अपने अनुप्रयोग लांच की रूपरेखा की प्रक्रिया के माध्यम से लेते हैं और सबसे अधिक बार की गई गलतियों पर सुझाव देने के, यह बहुत अच्छा है।

2

प्रणाली क्या शुरू करने के लिए 4-5 सेकंड लेने के लिए अपने अनुप्रयोग पैदा नहीं है इससे पहले कि एप्लिकेशन को लॉन्च करने, कहने के लिए है। यह शायद applicationDidFinishLaunching, या init, viewDidLoad, या आपके रूट व्यू नियंत्रक के अन्य सेटअप विधियों में आपका कोड है।

'टाइम प्रोफाइलर' इंस्ट्रूमेंट के साथ एक वास्तविक डिवाइस पर अपना ऐप प्रोफाइल करें। केवल अपना ऐप लॉन्च करें, इसे लॉन्च करने के बाद यूआई पर किसी भी बटन को दबाएं। हम केवल यह देखना चाहते हैं कि लॉन्च के दौरान क्या हो रहा है।

मैं खिड़की के निचले बाएं किनारे पर 'कॉल ट्री' के तहत 'थ्रेड द्वारा अलग,' 'इन्वर्टर कॉल ट्री,' 'सिस्टम लाइब्रेरीज़ छुपाएं' और 'ओब्जे-सी केवल दिखाएं' विकल्प की जांच करने का सुझाव दूंगा।

एक बार जब आप अपने चुने हुए विकल्पों की जांच कर लेंगे, तो विधि कॉल की सूची नीचे जाएं। सबसे अधिक समय लेने वाले लोगों के साथ शुरू करें (स्पष्ट कारणों से)। समय बिताने के बारे में अधिक विस्तृत जानकारी प्राप्त करने के लिए आप प्रतीक नामों पर डबल क्लिक कर सकते हैं। सौभाग्य!

4

पर समर्पित एक लंबे अनुक्रम के साथ एक बहुत अच्छा डब्ल्यूडब्ल्यूडीसी 2012 वीडियो है, यह विषय: सत्र 235 (उत्तरदायित्व)। मैं दृढ़ता से अनुशंसा करता हूं कि आप इसे देखें। यह आपको लॉन्च करने के लिए बहुत सारे संकेत और चाल देता है (बहुत से पुस्तकालयों से लिंक न करें), आपको बताता है कि कैसे मापें और कैसे उपकरण में अपने माप को पढ़ा जाए,

0

मेरी राय में, लांच समय मुख्य रूप से

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

समारोह में खर्च आप सामान का एक समूह है जो ब्लॉक प्रक्रिया है, यह शुरू करने के लिए समय लगेगा करते हैं।

तो आप बाद में कुछ अनावश्यक कोड निकालकर अपने applicationDidFinishLaunching को अनुकूलित कर सकते हैं। या आप अपना कोड गैर-ब्लॉक बना सकते हैं, उदाहरण के लिए, आपको सिंक्रोनस के बजाय applicationDidFinishLaunching में एसिंक्रोनस नेटवर्क अनुरोधों का उपयोग करना चाहिए।

1

हमें एक ही समस्या थी।

आखिरकार, हमने वीडियो को प्रीडलोड करके काफी समय तक लॉन्च किया .DidAppear। जब तक मूवी लॉन्च करने के लिए उपयोगकर्ता प्ले बटन को टैप करता है, तब तक पर्याप्त सामग्री लोड हो जाती है ताकि वह लगभग तुरंत प्लेबैक शुरू कर सके।

उदा।: इस ब्लॉग पोस्ट में

- (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

हो सकता है कि आप अपने वीडियो को पृष्ठभूमि में पृष्ठभूमि में लोड कर सकें: didFinishLaunchingWithOptions: ', जो पहले आपके व्यू कंट्रोलर के 'viewDidAppear' है, ताकि यह मुख्य थ्रेड को अवरुद्ध न करे। – Gon

संबंधित मुद्दे