IOS 應用響應中斷分析

作者:朱克鋒

郵箱:[email protected]

轉載請註明出處:http://blog.csdn.net/linux_zkf


除了Home按鍵可以終止您的應用程序之外,系統也可以暫時中斷您的應用程序,使用戶得以響應一些重要的事件。舉例來說,應用程序可能被呼入的電話、SMS信息、日曆警告、或者設備上的Sleep按鍵所打斷。按下Home按鍵會終止您的應用程序,而上述這些中斷則只是暫時的。如果用戶忽略這些中斷,您的應用程序可以象之前那樣繼續運行;然而,如果用戶決定接電話或迴應SMS信息,系統就會開始終止您的程序。
中斷過程的事件流程

    1.    系統檢測到有電話、SMS信息、或者日曆警告發生。
    2.    系統調用應用程序委託的applicationWillResignActive:方法,同時禁止將觸摸事件發送給您的應用程序。中斷會導致應用程序暫時失去控制權。如果控制權的丟失會影響程序的行爲或導致不好的用戶體驗,您就應該在委託方法中採取恰當的步驟進行規避。舉例來說,如果您的程序是個遊戲,就應該暫停。您還應該禁用定時器、降低OpenGL的幀率(如果正在使用OpenGL的話),通常還應該使應用程序進行休眠狀態。在這休眠狀態下,您的應用程序繼續運行,但是不應該做任何重要的工作。
    3.    系統顯示一個帶有事件信息的警告窗口。用戶可以選擇忽略或響應該事件。
    4.    如果用戶忽略該事件,系統就調用應用程序委託的applicationDidBecomeActive:方法,並重新開始嚮應用程序傳遞觸摸事件。 您可以在這個方法中重新激活定時器、提高OpenGL的幀率、以及將應用程序從休眠狀態喚醒。對於處於暫停狀態的遊戲,您應該考慮使它停在當時的狀態上,等待用戶做好重新玩的準備。舉例來說,您可以顯示一個警告窗口,而窗口中帶有重新開始的控件。
    5.    如果用戶選擇響應該事件(而不是忽略),則系統會調用應用程序委託的applicationWillTerminate:方法。您的應用程序應該正常終止,保存所有必要的上下文信息,使應用程序在下一次啓動的時候可以回到同樣的位置。在您的應用程序終止之後,系統就開始啓動負責中斷的應用程序。
根據用戶對中斷的不同響應,系統可能在中斷結束之後再次啓動您的應用程序。舉例來說,如果用戶接聽一個電話並在完成後掛斷,則系統會重新啓動您的應用程序;如果用戶在接聽電話過程中回到Home屏幕或啓動另一個程序,則系統就不再啓動您的應用程序了。
重要提示:當用戶接聽電話並在通話過程中重新啓動您的應用程序時,狀態條的高度會變大,以反映當前用戶正在通話中。類似地,當用戶結束通話的時候,狀態條的高度會縮回正常尺寸。您的應用程序應該爲狀態條高度的變化做好準備,並據此調整內容區域的尺寸。視圖控制器會自動處理這個行爲,然而,如果您通過代碼進行用戶界面的佈局,就需要在視圖佈局以及通過layoutSubviews方法處理動態佈局變化時考慮狀態條的高度。


在運行您的應用程序時,如果用戶按下設備的休眠/喚醒按鍵,系統會調用應用程序委託的applicationWillResignActive:方法,停止觸摸事件的派發,然後使設備進入休眠狀態。之後,當用戶喚醒設備時,系統會調用應用程序委託的applicationDidBecomeActive:方法,並再次開始嚮應用程序派發事件。如同處理其它中斷一樣,您應該使用這些方法來使應用程序進入休眠狀態(或者暫停遊戲)及再次喚醒它們。在休眠時,您的應用程序應該儘可能少用電力。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章