iOS中App切換狀態原理

2021-08-01 23:59:42 字數 1789 閱讀 8737

注:應用從froeground切換到background只有在支援多工並且執行ios4.0或更新版本系統的裝置上才會發生。所有其它的情況,應用不是切向後台,而是直接終止,並且從記憶體中清除。

應用切向後台background時應該做什麼:

(2)儲存使用者資料和應用狀態資訊。所有沒有儲存的改變都應該在切向background狀態前寫入磁碟以儲存。這一步是必須的,因為你的應用在後台時很有可能因為多種其它原因而被很快kill掉。根據需要你可以在background thread後台執行緒中執行這些操作。

(3)釋放盡可能多的記憶體資源。

依據不同的應用場合,應用切向後台時還有很多其它的事情需要做,比如active狀態的bonjour服務應該暫停,應用應該停止呼叫opengl es函式。

因為前台應用在使用系統資源和硬體時一直比後台應用具有更高的優先權。執行在後台的應用應該對此差異有心理準備,並且在後台執行時要調整它們的訪問資源行為。特別的,當應用切向background時尤其要遵循以下幾點:

(2)在應用掛起suspended之前取消所有bonjour相關的服務。當應用轉向後台,並且在被掛起前,應用應該unregister bonjour服務並且關掉任何和網路服務相關的sockets監聽。掛起的應用是沒法響應這些服務請求的。如果你的應用不關掉這些和bonjour相關的服務,當應用被掛起的時候,系統會自動幫你關掉這些服務。

(3)在基於網路sockets的應用中,需要處理連線失敗的情況。當你的應用因為某些原因而被掛起時,系統可能會拆除socket連線。只要你的應用對盡可能多的網路錯誤情況都有很好的處理,像丟掉訊號等,此類問題不會導致你的應用出現不正常。當應用從後台退出恢復執行時,如果遇到sockets使用錯誤,簡單的重建socket連線即可。

(4)在切向background狀態前儲存應用狀態。在低記憶體告警時,後台應用可能會被清除出記憶體以釋放空間。處於suspended狀態的應用被優先清除記憶體,並且在被清除前不會給出任何通知。因此,當應用切入background狀態前一定要儲存足夠多的應用狀態資訊以便後面恢復時使用。

(5)當切向後台時,釋放所有不再需要的記憶體。如果你的應用保持著乙個很大的記憶體快取物件(比如影象),則切入後台前,釋放所有的對這些快取物件的引用。

(6)在被掛起前停止使用系統共享資源。使用系統共享資源(比如address book或calendar data)的應用,在被掛起前必須停止對這些共享資源的使用。對這些資源的使用,前台應用具有更高的優先使用權,如果發現你的應用在被掛起後還沒有停止對這些共享資源的使用,則應該將被kill掉。

(7)避免更新應用視窗和檢視。當應用處在後台時,應用視窗和檢視是不可見的,所以不需要更新它他。儘管在後台建立和操縱視窗和檢視物件並不會導致應用被kill掉,但是可以考慮將這些工作推遲到應用返回前台時執行。

(8)響應外部附件連線和失去連線通知。針對和外部附件有通訊的應用,當應用切向background狀態時,系統會傳送乙個disconnection通知。應用必須註冊此通知並且使用它去關掉當前的附件訪問session。當應用返回foreground時,會有乙個與之匹配的通知被傳送,給應用提供重新建立session的機會。

(9)切向後台時,清除行為警告相關的資源。為了在應用相互切換之間儲存應用上下文,當應用切向後台時,系統並不自動dismiss action sheets(uiactionsheet)和alert views(uialertview)。由應用設計者去提供具本的清除方案。對於執行在ios4.0版本之前的應用,在退出時action sheets和alerts仍然被dismiss掉,以讓應用的取消處理函式有機會去執行。

(10)切向後台時,移除所有敏感檢視資訊。因為系統會快照應用介面並且生成應用切換動畫,所以帶有敏感資訊的檢視或視窗必須隱藏或移除,具體原因前面已介紹。

iOS 中如何實現 App 主題切換

原文 之前看網易 for ios 有一版更新之後提供了主題切換的功能,其顏色還能夠讓使用者自定義。當時覺得挺好玩的,就感覺要做很多任務作的樣子。但最近在刷 programming ios 9 才知道有很簡單的實現方式 uiview中有乙個tintcolor屬性,該屬性會在 view hierarch...

iOS的APP發布狀態

蘋果在itunes connect後台設定了三種顏色的指示器 紅 黃 綠 每種顏色代表不同的狀態,這樣就可以清晰地呈現給開發者。綠色 黃色指示器 1 準備提交 2 正在等待審核 3 正在審核 4 待定合約 5 正在等待出口合規性檢查 6 等待開發者發布 正在處理你的二進位制檔案,並且將在24小時內上...

iOS開發 App程式啟動原理

建立乙個project後,會在supporting files目錄下看到乙個 project名 info.plist 的檔案,該檔案對project做一些執行期的配置。很重要,不能刪除 在舊版本號xcode建立的project中。這個配置檔案的名字就叫 info.plist 專案中其它plist檔案...