iPhone的多工列App們不需要特地去關閉?

我一直對iOS的記憶體切換法很有興趣,今天看了Speirs所寫的「Misconceptions About iOS Multitasking」之後總算有個整體的認識了。

IMG_1285.PNG

首先請看上圖,這是一般我們在iPhone上可以看見的記憶體配置。懶得看理論的可以跳過中間這段

/* 計算機概論來了~ */

根據MacOS的定義

wired (固定的):記憶體放置作業系統重要資料,這些記憶體不會被釋放也不能被外來改變
active (現用的):記憶體載入了最近曾經使用過的App在前景執行,而且隨時接受反應
inactive (停用的):記憶體載入了最近曾經使用過的App在前景執行,但不接受反應(例如你正在打論文但是睡著了,畫面自動鎖定)

參考Apple技術支援:認識多工處理

而Speirs所寫iOS的兩個多工步驟是

Background (背景的):App不再顯示但仍然啟動
Suspended (被中止的):App仍然長駐在記憶體中,但不啟動

運作方式參考「Misconceptions About iOS Multitasking

你使用的記憶體永遠只有 wired + active + inactive,而沒有使用的空記憶體就稱為free (可用的)

/* 計算機概論結束了,醒醒~ */

所以讓我們簡單的說結論吧:

  1. 假如有人告訴你說停留在多工列表的Apps 它們還在執行、還在用你的記憶體、還在消耗你的電池...這些都是錯的

  2. 當你在App中按下home button,App 會被作業系統從 Active 改成 Background,然後很快的變成 Suspended 不再消耗資源

  3. 從Background 變成Suspended的步驟很快,但如果前面有工作沒做完也有可能要花上10分鐘

  4. 假如free記憶體即將用完,iOS會自動移除Suspended 狀態的Apps清出記憶體

  5. 有五種類型的Apps會在 background 直到做完所有事情:audio(音樂), GPS(定位), VOIP(網路語音通信), Newsstand(新聞) and accessory (控制配件的程式)


還不夠簡單的話,用一句話說完吧。

你不需要管iOS在背景裡怎麼做

Speirs想說的是iPhone的用法就這樣而已。

附註:以上都是理想值。但現實中就是有些程式會鎖住記憶體不放,可能是故意的也可能是意外,這時候強迫釋放記憶體還是有用。

留言

  1. 來問笨問題惹
    記憶體使用量要怎麼弄出來?

    回覆刪除
  2. 某些軟體可以看得到.

    回覆刪除
  3. 最近入手ipad 有收穫到!

    回覆刪除
  4. 所以說, 這就是我雖然很嚮往Android的美麗Homescreen大改造和Widgets, 但還是選擇留下來的原因 (還有就是iTunes的完美Sync服務)

    說是這樣說, 但最近Android的拉力增強了(託Ice Cream Sandwich的福), 我也不知換不換手機好 (畢竟我都用iOS近3年了, 雖然iPhone是上年夏天買的, 但人啊, 總是想嘗嘗鮮)
    目前看上了有官方承諾更新ICS的moto刀片機和三爽Nexus...

    回覆刪除
  5. 一定要特意去關....
    我碰到好幾次客人的ipad2說Safari開不了
    結果還是把下面那排攏長的多工列表關掉才正常....
    蘋果的APP參差不齊有問題還是有
    Speirs真的想的太美好了
    能上Store的軟體蘋果只有過濾內容
    穩定性有沒有測就不曉得了

    回覆刪除
  6. 現在用IPAD2 有些小BUG,看完相片後返回相薄主頁後會鬼隱了,APP STORE 按APP睇簡介進不去,這時都要關了APP 再開

    回覆刪除

張貼留言

這個網誌中的熱門文章

[iApp]「僕の魔界を救って!」推廣中

貓咪大戰爭/Battle Cats攻略