iOS後臺解析

iOS後臺

上個月給小妹買了一臺6s 她問我雙擊 Home 鍵之後 彈出的那些應用會不會耗電 我找到一篇文章 正好說的就是這個問題 摘要翻譯一下

原文地址

http://www.speirs.org/blog/2012/1/2/misconceptions-about-ios-multitasking.html

很多人以爲「在 iOS 上雙擊 Home 鍵之後底部彈出的一欄應用是當前 iOS 所有正在運行(包括後臺運行)的程序 它們仍然會佔用內存並耗費電量 要最大化設備的性能 最好手動關閉它們 」

但這是錯誤的 事實上這欄應用只是「用戶最近使用的應用列表」而非「所有正在運行的應用列表」 除非在特殊情況下 用戶不需要去手動管理這個列表

iOS執行狀態

iOS 應用有 5 種執行狀態 分別是:
沒有運行 - 應用處於終止狀態 沒有運行;
不活躍 - 應用處於前臺 但不接受事件操作(例如 當前應用處於活躍時 用戶進行了鎖屏操作);
活躍 - 應用處於 “使用中” 的正常狀態;
後臺 - 應用沒有顯示在屏幕上 但仍在執行代碼;
掛起 -應用仍然駐留在內存中 但不執行代碼;
「不活躍」和「活躍」這兩種狀態比較清楚 這裏需要討論的是 當一個應用從「活躍」切換到「後臺」 再到「掛起」 最後到「停止運行」這個過程中發生了什麼

當你點擊 Home 鍵時 應用會從「活躍」切換到「後臺」 並且大多數應用會在幾秒鐘後從「後臺」切換到「掛起」狀態

「掛起」狀態的應用仍留在內存中 這樣當你返回這個應用時可以快速使用 但它們並不使用處理器計算 也並不耗電

你可能會認爲 如果應用停留在內存中 你需要以某種方式時結束它以節省內存 實際上不需要 因爲 iOS 會自動幫你做到 如果有很多應用停留在內存中 而你打開了一個很佔內存的應用 比如大遊戲 iOS 會自動清理這些「掛起」的應用並將他們切換到「沒有運行」狀態 也就是把它們完全從內存中清除 下次當你打開它們時 相當於重新打開這個應用

可能會讓人們比較困惑的是:上述的所有情況都不會影響到你在多任務欄中看到什麼 多任務欄中顯示的只是你最近使用的應用程序的列表 而不論這些應用是處於「後臺」「掛起」或「沒有運行」狀態 你可能還會注意到了 當前正運行的應用並不出現在「多任務欄」中

多任務運行

當應用會從「活躍」切換到「後臺」狀態 大多數應用會在幾秒鐘內從「後臺」切換到「掛起」狀態 但應用也可以通過申明自己是「後臺任務」來要求延長「後臺」狀態 舉個例子 我用自己最喜歡的播客應用 Instacast 下載比較大的播客節目 當 Instacast 處於「活躍」狀態時開始下載 如果點擊 Home 鍵 Instacast 會在後臺運行 5 秒鐘左右 然後就進入了「掛起」狀態 就會中斷下載播客節目 這個節目可能需要 5 分鐘甚至更長一點時間才能下載完

但 iOS 允許 Instacast 申明下載任務是「後臺任務」 這樣就可以獲得額外的時間在後臺運行 完成下載任務 但應用申請額外的「後臺運行」時間並不是無限長的 一個應用可以獲得 10 分鐘的額外後臺運行時間 然後這個應用會被 iOS 強制切換到「掛起」狀態 所以 你自己仍然不用去擔心

無限制後臺運行

所有的 iOS 應用都有 5 秒鐘的後臺運行時間 有一些應用可以申請 10 分鐘的額外後臺運行時間 只有非常少的一些應用可以真正不限時長的在後臺運行

在 iOS 5 中只允許 5 中應用可以不限制時長的在後臺運行:
在後臺播放音頻的應用 例如 Instacast 在後臺播放音頻播客時;
在後臺追蹤地理位置的應用 例如 當你在使用其他應用時 仍然可以從 TomTom 導航軟件收到語音提示;
在後臺等候接收 VOIP 語音通話的應用 例如 如果你在 iOS 上使用 Skype 即便當前不在用 Skype 也能接收到語音通話請求;
「新聞報刊」中的應用下載的新的內容;
可以在後臺持續從外接設備上接收更新的應用

最近纔開始往github上放東西 在公司寫的又不能放= = 大家姑且看看吧

github地址: https://github.com/FuThD

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