2010-08-16 61 views
0

我有一個iPhone應用程序,有一個視圖,需要從各種互聯網網站獲取大量數據。因此,加載所需的時間是不可接受的。我想知道是否有任何方法在'applicationDidFinishLaunching'方法中加載視圖,所以延遲是在應用程序啓動時,而不是通過導航中途。預加載UIView儘量減少運行iPhone應用程序時的延遲

非常感謝!

回答

1

您希望儘快加載視圖,然後啓動後臺線程或異步請求以拉取數據。

不建議在初始加載期間讓應用程序進入睡眠狀態。我相信SpringBoard會終止任何需要30秒以上才能完成加載的應用程序。

這是一個不好的用戶體驗到了該應用做無可見反饋的東西給用戶(動畫UIActivityView例如)

+0

我想讓它睡4秒鐘,而不是30秒 - 只是爲了顯示啓動畫面,因爲它非常酷,但我要用異步加載和輪子。我對此大多滿意。感謝您的幫助! – Rossi 2010-08-18 17:41:35

0

您是否已經考慮過異步加載數據?在加載時,用戶界面不會被阻止。例如,當您的應用加載數據時,您可以顯示一個漂亮的加載輪。這就是所有好的應用程序如何執行此操作

+0

是的,但我在一開始就表現出我的閃屏使得應用睡眠反正等我認爲在這段時間內做出一些工作會很光滑。這是我的備份計劃 - 所以它仍然可能看起來很酷。 – Rossi 2010-08-16 17:26:40

0

如果初始視圖有比你的「數據」視圖中的單獨的viewController,您可以添加到數據視圖到的appDelegate的引用,然後做一些事情,如:

if (self.curAccountManager == nil) { 
    self.curAccountManager = [[accountManagerController alloc] initWithNibName:@"accountManager" bundle:[NSBundle mainBundle]]; 
    if (![self.curAccountManager isViewLoaded]) { 
     UIView *tmpView = self.curAccountManager.view; 
     tmpView = nil; 
    } 



} 

這將加載視圖。但是,如果它正在進行大量加載,當用戶切換到它時,它可能不會很好響應。我建議你按照上面的建議,並在你的數據視圖中異步加載數據,這樣你至少可以顯示用戶狀態或部分結果。

+0

是的,謝謝 - 我要去用異步加載 - 它幾乎完美的方式 - 一些輕微的滯後和輪子旋轉,但我會克服它。感謝您的幫助! – Rossi 2010-08-18 17:42:35