2014-09-10 71 views
0

是否可以確定從啓動屏幕第一次顯示的那一刻起當前應用程序啓動的時間?我想確保啓動屏幕顯示一定的最短時間。iOS:獲取應用程序啓動時間

+0

爲什麼不使用計時器? – rebello95 2014-09-10 18:38:59

+0

因爲我的代碼不會真正執行,直到*發佈圖像消失後,我不知道它已經顯示了多長時間。 – devios1 2014-09-10 18:39:34

+0

或者至少我假設。我實際上並不知道這一點。 – devios1 2014-09-10 18:40:50

回答

0

我建議在您的應用代理的-[id<UIApplicationDelegate> application:applicationWillFinishLaunchingWithOptions:]方法中捕獲當前時間並存儲該值以備後用。

+0

我也可以在'main()'的開頭執行此操作。 – devios1 2014-09-10 18:45:52

+0

我很想知道兩者之間的流逝時間。 – Holly 2014-09-10 18:48:28

+0

既然你問了,我在0.84秒的基準測試中,我正在處理的應用程序(當在禁用斷點的調試器中運行時)的差異。所以這很重要。 'main()'看起來是迄今爲止最好的選擇。 – devios1 2014-09-10 18:57:15

1

這會產生一種感覺,認爲您的應用響應性較差,並且通常是不好的用戶體驗。但從技術角度來看,在UIApplicationDelegate上的每個代理方法中都可以放置斷點或NSLog以查看它們觸發的順序,然後在Time Profiler中運行應用程序以查看花費時間。

WWDC會議專門用於縮短從用戶點擊應用圖標到應用完全啓動並準備好用於用戶交互的時間。最好的用戶體驗來自盡可能接近零的時間。用戶不喜歡看貴公司的標誌,這是HIG禁止的。

+0

我個人同意這一點,但這不是我的決定。我不打算延遲超過半秒。事實上,我提出這個問題的理由是,通過考慮已經顯示的啓動圖像已經顯示了多長時間來進一步減少這個問題,所以我不會毫無必要地爲用戶繪製更長的圖像。 – devios1 2014-09-10 18:49:31

+0

如果這是從產品所有者那裏下來的,最好的路線可能是考慮放棄(和在main()中)的這些斷點並保持它們之間的時間間隔。如果您的平均啓動時間達到200毫秒,那麼延遲300毫秒,會使產品擁有者滿意嗎? – wjl 2014-09-10 18:52:04

+0

讓我們希望如此!我不喜歡人爲地放慢發射速度的想法。 – devios1 2014-09-10 18:59:44