我舉一個比較好理解的例子。 在夜市常常可以看到有一些攤位因為叫賣精彩所以圍觀了很多人,但是那些人雖然站在那裡,但是不見得會買,你想要買但是擠不進去時,只要大聲跟攤販老闆說你要買,老闆自然會叫圍觀的人清出一條通道讓你走向前買貨。 IPHONE OS也是這樣,你看起來好像剩餘的記憶體不多,但是那些站住記憶體的就好像是夜市圍觀的群眾,只要一有程式要執行,OS就會把他們清掉,你根本不需要管你前面有程式佔住多少記憶體,反正就是會清給你就對了。
在IOS 4裡面只有特許的幾種類型的應用程式可以在特定的API幫助下,達到多工的效果,基本上大部份的時間IOS 4還是以單工的方式在執行。為什麼蘋果要這麼做呢?根據蘋果研發團隊的觀察,其實很多狀況你根本就不需要多工,譬如說你在打電動,如果這個時候電話來的時候,應該是先把遊戲的進度先暫存起來,然後退出程式,專心接手機,而不是你在接電話,遊戲在背景繼續執行,請問你在打電話的時候,能夠一邊打飛機嗎?如果不能,遊戲又一直在進行,你不就GAME OVER了嘛? 同樣的道理,你在看電影的時候,電話來的時候也不應該繼續播放阿,應該是紀錄你現在看到甚麼地方,讓播放程式重新執行的時候,在從你中斷的地方開始播放就好。
那甚麼東西需要繼續執行呢?像GPS就需要繼續執行,否則你在講完電話後在重新執行程式,很可能就錯過要到達的地方了。這是蘋果在多工耗電但是方便,而單工省電但是不便之間想出來的折衷方法,算是蠻異想天開的做法。
prettyboy wrote:
根據蘋果研發團隊的觀察,其實很多狀況你根本就不需要多工,譬如說你在打電動,如果這個時候電話來的時候,應該是先把遊戲的進度先暫存起來,然後退出程式,專心接手機,而不是你在接電話,遊戲在背景繼續執行,
不知道這個觀點是您猜的還是阿婆小組告訴您的?
真正的多工很耗系統資源, 如果硬體不夠力, 跑起來會很辛苦, 就不會順. 我猜iPhone的設計最高指導原則就是使用者順暢感, 因此才使用這種有人稱為"偽多工"的方式. 然後用"其實很多狀況你根本就不需要多工"的這種說法來掩蓋本身不夠力的問題. 這種作法在小弟工作中也經常碰到(小弟也是在科技業), 反正自己做不到, 就說你不需要, 只是我們不像阿婆那麼夠力, 這樣講一定被打槍!
prettyboy wrote:
請問你在打電話的時候,能夠一邊打飛機嗎?
這就是典型的"我做不到, 就說你不需要"的講法. 不然如果iPhone做的到, 夾不死一定在keynote吹說iPhone可以打電話然後打飛機還在背景執行, 等切回去時, 你已經死了, 來證明可以真的多工. 或是切回去時如果還沒死, 就調侃地說"叔叔有練過, 小朋友不要學", 這樣不是更能引起一遍高潮嗎?
像我經常玩世紀帝國/模擬城市...遊戲時會切換到其他程式, 然後等一陣子再切回去狠殺猛打一陣! 還有像開心農場/虛擬寵物這種進展緩慢的遊戲, 本來經常就是偶爾才切回去動一下, 然後切到別的程式去.
我是覺得如果可以真的多工的話, 可以提供選項讓使用者決定要暫停還是繼續在背景跑. 而不是用"你不會這樣做"來說服使用者.
heliboy wrote:
像我經常玩世紀帝國/模擬城市...遊戲時會切換到其他程式, 然後等一陣子再切回去狠殺猛打一陣! 還有像開心農場/虛擬寵物這種進展緩慢的遊戲, 本來經常就是偶爾才切回去動一下, 然後切到別的程式去....(恕刪)
像開心農場、虛擬寵物這類,應該會以真實時間為主,單機的就抓手機時間,
多人的就抓Server時間,你離開遊戲還是可以發展,沒必要開著佔資源。
至於其他遊戲,我覺得只是手機遊戲而已,不用要求要能在手機多工啦....
只要能回去遊戲時,是剛才的狀態就已經非常完美了。
只是「大部分」的遊戲都沒做到這一點,只有一些比較簡單或靜態的遊戲有
做到記錄遊戲狀態,華麗一點的遊戲可能記憶體吃相當多,沒辦法採用即時
記錄,都是用關卡或儲存點來解決,這是比較麻煩的地方。
當然,記憶體吃很多的遊戲,你要他能在背景一直運行,然後去做其他事情
,對於開完機只剩一百多MB的3GS/iPad絕對是更困難。
2G的話找n72.plist
3G找N82AP.plist
3GS找N88AP.plist
把相應的檔案複製到電腦隨便位置,用記事本開啟。
要關掉背景圖片,找出<key>homescreen-wallpaper</key>
要關掉Multi-tasking,找出<key>multitasking</key>
把要關掉的功能的key後面的<true/>改成<false/>
儲存後把修改好的檔案複製回相應位置,再重新啟動就能關掉。
我承認是因為好奇心驅使,用3G jb後把這兩個功能開了後卡到不行只好關掉它們的其中一位 :p
內文搜尋

X