Backgrounder是個對系統行為影響巨大的程序,個人感覺那些越獄之後大叫越獄費電厲害的一大半是因為這個程序。而Backgrounder的設置又是無比的繞,不仔細想想是不大能搞清楚的,這個程序的設置是需要思考的。所以小弟我認真做了個教程,希望能夠幫大家正確使用這個程序。所有的說明以IOS4為標准,更早的系統我沒有用過,沒辦法幫到大家。
先用截圖簡單說明一下,然後後面再展開說明。
後台模式設置(Backgrounding method)
對於正確使用Backgrounder,最重要的就是對於IOS4原生後台模式的理解。這個問題Backgrounder自帶的說明就已經講得很清楚了。
IOS4提供的偽後台支持後台音樂播放,GPS定位,網絡語音通話,以及任務完成。也就是說僅只有這四項工作可以真正在後台運行。所謂任務完成是指在程序退出的時候還有工作沒處理完,比如保存進度存檔,那麼系統允許程序在後台繼續工作,然後在完成保存進度之後停止運行。
除了上述四項後台功能,系統還提供一個程序快速切換的功能,這個功能也算是IOS4多任務的一部分。個人觀點,這個功能是IOS4多任務中最先進最有用的功能。它讓程序在最小化的時候僅僅是暫停運行,但並不釋放內存,保持程序當前的狀態,這樣當你再次打開這個程序的時候,程序不需要重新從硬盤(閃存)中讀出,不需要重新Load數據,而是瞬間恢復到上次退出程序時的狀態,這個特性會給用戶很強的多任務的感覺,仿佛程序從來沒有退出過一樣。而這個功能所花費的代價只是一塊內存,而並不消耗cpu時間。什麼意思呢?就是說快速切換並不比退出程序多耗一絲電,相反,由於再次打開程序的時候不需要讀硬盤(閃存),它比退出程序再重新啟動更省電!
關於程序快速切換,了解到這個程度還不夠,我們還需要知道更深入一點才能正確地使用Backgrounder。
第一點是:為快速切換所保留的內存空間是可以被擠占的。IOS4是沒有內存交換空間的,它不會像Windows那樣把硬盤(閃存)虛擬成內存來建立一個對應用程序來說無限的虛擬內存空間。所以,在IOS4中,當前台程序內存空間不足的時候,系統會釋放掉為後台程序保留的用於快速切換的內存,提供給前台程序使用。當然,如果所有能釋放的內存都釋放了,還不能滿足前台程序的內存要求的話,系統會直接中止前台程序的運行,這就是我們為什麼會看到有些程序運行中無故退出的原因。用於快速切換的內存可以被擠占這個特性是很先進的內存動態管理方式,特別適合於內存資源緊張的移動設備。這種內存管理策略的優點是在幾乎不消耗任何額外的時間(CPU時間,程序在後台暫停)、空間(內存空間,可以被擠占)資源的情況下,可以提供一個性能優良的偽多任務環境。但是正因為快速切換的內存可以被擠占,所以它的缺點就是它不總是可用的。大家都有經驗打開Safari的時候,有時能夠直接顯示上次退出時候的網頁,有時候就需要重新載入,就是這個原因。
關於快速切換我們需要知道的另外一點是,在每個程序最小化的時候,系統都會給程序發送一個通知,告訴程序你現在已經被最小化了。這時候一個優雅、精良的程序會釋放掉可以釋放的一部分無關緊要的空間以節省內存,比如畫面緩存。這個特性的意思是支持IOS4多任務的程序被快速切換到後台以後占用的內存空間會比在前台運行時少。Backgrounder的真後台的操作方式就是在程序最小化的時候不給程序發送這個最小化的通知,所以程序不知道自己已經在後台了,不僅是仍然占用和在前台時一樣多的內存,而且還在繼續運行,和在前台時一樣燒電。而除了幾個操作系統底層的精靈進程之外,所有程序在IOS4的原生後台狀態下都是暫停運行的,不燒電的。不僅如此,就算是已經在後台的程序,如果它支持IOS4多任務,那麼它在收到系統發出的內存不足通知的時候,它還可以繼續釋放更多內存。比如Safari,在剛最小化的時候,它是保留所有打開的網頁的,之後如果系統發出內存不足通知,Safari就可以一個一個地釋放已打開的網頁所占用的內存。
好了,說了這麼多,就是為了幫助大家正確選擇Backgrounder最重要的一項選擇:全局後台模式選擇。對於這個選擇,小弟只有一個推薦:原生模式。
下面就是global裡的設置,是按照項目一個一個來的,紅色部分有的是我加上去的,方便理解。還請大家仔細看完,會理解很多,我是受益匪淺啊。
第一項:(global裡的 backgrounding的第一項 off)程序退出。上面已經說了,相比原生後台模式沒有任何優勢,兩者都不會讓程序在後台運行都不耗電,兩者都不占內存(原生模式快速切換的內存可被釋放),但是程序的退出和啟動要比原生的快速切換多耗電且速度慢(你每次打開植物大戰僵屍都要等那條草皮重新展開一次)。這裡要順便說一下,那些喜歡雙擊home鍵調出任務欄然後一個一個關掉任務欄上所有程序的同學,你們的這種偏執行為沒有任何意義。
第二項:(global裡的 backgrounding的第二項 native)原生後台。
第三項:(global裡的 backgrounding的第三項 Backgrounder)真後台模式。這是Backgrounder的精華,是它存在的意義所在,但是也是很危險的選擇。你需要時刻牢記的是,程序在真後台的時候在和前台時一樣全速運行,一樣刷新要顯示的每一幀畫面,除了背光,跟在前台的時候一樣耗電。你更需要小心的是除了電,真後台的程序還跟在前台的時候一樣在消耗流量!!!我的建議是:切勿在全局設置裡面選擇這一項。只有你真的需要一個程序在後台運行的時候才在覆蓋設置裡面添加你要的程序,然後選擇這一項。別的程序選擇真後台除了燒電以外沒有任何意義,說不定還會讓你錯過很多東西:等你接完電話切回去一看,僵屍早就把你家鏟了。
第四項:(global裡的 backgrounding的第四項 auto detect)自動選擇模式。這個模式的意思是:對於支持IOS4多任務的程序使用原生模式,對於不支持IOS4多任務原生後台的老程序啟用真後台模式。我個人的看法還是不要選這一項,需要真後台的程序還是要在覆蓋設置裡面手動添加。因為你不知道哪些程序是不支持原生後台的,所以很容易某個老游戲糊裡糊塗地就被真後台了,然後瘋狂偷電偷流量,尤其是在菊花顯示沒有打開的情況下。
原生後台模式選項(Option for "Native")
第一項:(fast app switching)程序快速切換。不用說,一定要打開。如果關閉這一項,那麼除了音樂、GPS、VOIP和任務完成之外就跟關閉後台沒有區別了。
第二項:(even if unsupported)即使程序不支持快速切換也強行打開。對於這一項就要小心了,主要有兩個問題。一是不支持原生後台快速切換的程序在打開這個Backgrounder提供的快速切換的時候不會主動釋放部分內存,跟在前台時占用的內存一樣。二是程序通過這種方式被快速切換到後台之後,如果所保留的內存被別的程序擠占的話,未保存的進度和工作會全部丟失。支持快速切換的程序不會出現這種情況,因為他們在收到最小化通知的時候就會自動存盤。所以,個人意見不推薦打開這個選項。
真後台模式選項(Option for "Backgrounder")
後台開關選項(Backgrounding state)
後台狀態顯示選項(Indicate state via...)
Miscellaneous
這幾項都涉及到後台模式切換,而且比較繞,所以放到一起講。
這幾項之所以繞,是因為後台模式切換的問題Backgrounder的說明裡面沒有說得很直白清楚。
Backgrounder可以讓我們在應用程序運行中通過Activator的手勢或者按鍵在兩種後台模式之間切換,但是具體是在哪兩種模式之間切換很多人都沒搞清楚。現在我們一共有三種模式:無後台模式(完全退出),原生模式和真後台模式(自動檢測不算一個模式)。這三種模式的切換方式是:
1、對於設置為原生後台模式的程序,它會在原生後台和完全退出之間切換。原生後台的時候顯示藍菊花和N圖標,完全退出模式時無菊花和圖標。比如ipod程序,在切換到無後台模式之後一按Home鍵歌聲就停止了,跟在任務欄裡面手動關掉一個效果。
2、對於真後台模式的程序,可以通過真後台切換模式選項:Fall back to Native來選擇是切換到完全退出還是切換到原生後台。我選擇的是切換到原生後台,因為在我現在的理解中,無後台模式沒有存在的價值。當然,既然作者做了完全退出的選項,說明完全退出還是有存在的意義的,只是現在我對IOS的理解還不深,還看不到其中的原因。
3、對於設置為完全退出的程序,則無法切換後台狀態,只能完全退出,沒有選擇。
4、有一種神奇的程序是完全無法後台的,不管你設成原生後台還是真後台,它們永遠都不會在後台運行,這是因為它們被有意地設計成在最小化的時候就完全退出。這類程序也無法切換後台狀態,也永遠不會有後台圖標或者菊花顯示,因為它們永遠不會在後台運行。我對裝軟件這種事情是很謹慎的,尤其是修改系統的軟件,不是我需要的我絕對不會裝,我這年紀的人已經沒有