2013-02-13 63 views
1

我們的應用程序需要花費時間從iPod中的背景恢復,因此每次都會顯示啓動畫面。當應用程序進入前臺時,它會從緩存中加載一些數據,如果有大量數據需要時間。我該如何處理這種情況?我只是將這些方法放入調度隊列中,但沒有顯着的效果。花時間從後臺恢復應用程序,顯示啓動畫面

+2

你是什麼意思,它需要時間,因此它顯示啓動畫面?您是手動顯示啓動畫面還是自動顯示啓動畫面?如果它是自動的,那不是因爲它需要時間,而是因爲應用程序在返回接地期間被殺死了一段時間,以便爲其他內存需求騰出空間。 – 2013-02-13 05:05:24

+0

自動顯示初始屏幕。其實應用程序不會退出,但需要一段時間才能恢復。在使用儀器進行時間分析時,那些從緩存中加載數據的方法似乎需要時間來執行。 – Neo 2013-02-13 05:18:01

回答

1

使用調度隊列並將那些耗時的方法(從緩存中加載數據的方法)發送到後臺。其時做的,說你現在需要做的一些UI更新,讓主隊列和更新存在的UI

dispatch_queue_t queue = dispatch_queue_create("name for the queue", NULL); 
dispatch_async(queue, ^{ 
    //your extensive code goes here, should not involve any UI updates 
    //If there are any UI updates involved, uncomment the following code: 
    /*dispatch_async(dispatch_get_main_queue(), ^{ 
     //UI update here, as it should always be done on main thread 
    });*/ 
}); 

因爲你是在發射過程中的主線程上做繁重的計算,你正在顯示的閃屏。你應該照顧它,並將它移到後臺,如果將來,如果從緩存加載需要很長時間,超過10秒,你的應用程序將被看門狗殺死。

乾杯,玩得開心

相關問題