手機(jī)后臺可以方便人們繼續(xù)之前被打斷的操作,但是太多手機(jī)后臺又會造成手機(jī)卡頓,那么手機(jī)后臺到底是怎么回事呢? 其實(shí)很多人提到安卓的流暢度不如蘋果其實(shí)是優(yōu)化問題,本質(zhì)上來說和后臺程序沒有什么關(guān)系。 進(jìn)程 安卓的后臺的設(shè)計本身就是淡化用戶對后臺的管理,由系統(tǒng)來完成系統(tǒng)資源的調(diào)配。 Android系統(tǒng)會盡量維持一個進(jìn)程的生命,直到最終需要為新的更重要的進(jìn)程騰出內(nèi)存空間。為了決定哪個該殺哪個該留,系統(tǒng)會跟據(jù)運(yùn)行于進(jìn)程內(nèi)的組件的和組件的狀態(tài)把進(jìn)程置于不同的重要性等級。當(dāng)需要系統(tǒng)資源時,重要性等級越低的先被淘汰。 安卓的進(jìn)程分6類: 1.前臺進(jìn)程(foreground):目前正在屏幕上顯示的進(jìn)程和一些系統(tǒng)進(jìn)程。最遲終止的就是前臺程序。所謂前臺程序其實(shí)就是你目前屏幕上運(yùn)行著的程序,各種游戲、qq、微博……Android的應(yīng)用在被切換到后臺時,它其實(shí)已經(jīng)被暫停了,并不會消耗cpu資源,只保留了運(yùn)行狀態(tài).所以為什么有的程序切出去重進(jìn)會到主界面.但是,一個程序如果想要在后臺處理些東西,如音樂播放,它就會開啟一個服務(wù).服務(wù)可在后持續(xù)運(yùn)行,所以在后臺耗電的也只有帶服務(wù)的應(yīng)用了.這個在進(jìn)程管理軟件里能看到,標(biāo)簽是service.而你平時用home鍵調(diào)出來并且殺掉的,其實(shí)就是這個前臺進(jìn)程,但它其實(shí)是最無辜的,因?yàn)槿思以诤笈_也就占占你內(nèi)存而已,并不造成耗電等問題,系統(tǒng)資源吃緊的時候,系統(tǒng)自己也會動手把他丫的殺了。 2.可見進(jìn)程(visible):一個進(jìn)程不擁有運(yùn)行于前臺的組件,但是依然能影響用戶所見。如,輸入法。 3.次要服務(wù)(secondaryserver):簡單來說就是一些殺掉了不影響系統(tǒng)穩(wěn)定運(yùn)行,但是嚴(yán)重影響用戶使用的服務(wù)。如gms、撥號器等,殺掉相當(dāng)影響用戶使用。 4.后臺進(jìn)程(hidden):當(dāng)前臺程序 (foreground)被你一個home鍵打回大西洋的時候,它就進(jìn)入后臺進(jìn)程的行列。wp、ios對待第三方應(yīng)用的后臺進(jìn)程基本上都是墓碑模式,即進(jìn)入后臺即時冷藏;其實(shí)安卓4.0后也支持類似的操作,只是需要用戶自行解決,同時冤魂不散的后臺服務(wù)依舊在耗電耗內(nèi)存污染通知欄。在系統(tǒng)內(nèi)存不足找人開刀的時候,這種進(jìn)程一般都是任人魚肉的那種… 5.空進(jìn)程(empty):沒有任何東西在內(nèi)運(yùn)行的進(jìn)程,保留這類進(jìn)程的唯一理由是高速緩存,這樣可以提高下一次一個組件要運(yùn)行它時的啟動速度。系統(tǒng)經(jīng)常為了平衡在進(jìn)程高速緩存和底層的內(nèi)核高速緩存之間的整體系統(tǒng)資源而殺死它們。 (其實(shí)還有一種,叫內(nèi)容供應(yīng)節(jié)點(diǎn),這貨的存在就是給其他應(yīng)用調(diào)用其內(nèi)容的,我覺得這事是服務(wù)于應(yīng)用,跟用戶一級沒什么直接聯(lián)系,原來就沒鳥它,現(xiàn)在補(bǔ)補(bǔ)咯……) 以上5種,自上而下,越下重要性越低,系統(tǒng)需要資源的時候,死的也就最快。 其實(shí)嚴(yán)格來說,安卓的后臺程序是可以完全關(guān)閉的。因?yàn)楦鶕?jù)如上的定義,后臺進(jìn)程(hidden)根本就是前臺進(jìn)程被打進(jìn)冷宮,你長按home就能滅了它。 而你所指的“不能徹底關(guān)掉”的,其實(shí)是程序在后臺給你打開的服務(wù)、空進(jìn)程。這些東西home鍵是關(guān)不掉的,需要用到一些特殊的應(yīng)用。 各個應(yīng)用、手機(jī)助手殺“后臺”的深度都不一樣,有些只是殺到后臺進(jìn)程(hidden)一級,有些就殺到前臺進(jìn)程都不放過,最后連桌面都要重新加載… 所以安卓其實(shí)是可以完全殺掉所有前臺、后臺、服務(wù),但這樣用著,不更蛋疼么? ios流暢本來其實(shí)是不關(guān)后臺什么事的,但實(shí)際上ios運(yùn)用墓碑模式,同時限制系統(tǒng)服務(wù),所有推送都統(tǒng)一到一起。本身就極大地減少了內(nèi)存的消耗;而wp更加是限制后臺應(yīng)用數(shù)量,以及只分配給每個應(yīng)用一定量的內(nèi)存,每個應(yīng)用都只能運(yùn)行在分配給它的內(nèi)存中(計劃經(jīng)濟(jì)…),所以wp理論上不會出現(xiàn)安卓那種內(nèi)存溢出的情況。(其實(shí)安卓本身原來也有限制內(nèi)存占用量,但這個量很小只有幾十MB人家都是幾百M(fèi)B…當(dāng)然了,雞賊的開發(fā)者會用各種手段突破這個形同虛設(shè)的限制…) 而安卓應(yīng)用開多了,慢了,其實(shí)是內(nèi)存占用太多,系統(tǒng)需要干掉幾個沒用的家伙,消耗了時間,而wp和ios因?yàn)槠洹坝媱澖?jīng)濟(jì)”的優(yōu)勢,所以從來不需要臨時擠內(nèi)存。 如果要牽扯到應(yīng)用殺不死,或者說死了又咸魚復(fù)活…這要說到android廣播機(jī)制: 系統(tǒng)接收到了一個動作、信息,比如系統(tǒng)接收到有人給你打電話,具有“廣播接收器”的“電話”功能收到通知,就啟動了,再執(zhí)行給你響鈴等等的動作。 有些應(yīng)用,它自己本身和“打電話”這個動作沒什么關(guān)系,但是它也有屬于“打電話”的那個類別的“廣播接收器”,然后跟隨廣播被系統(tǒng)調(diào)用而啟動。 當(dāng)一個程序放到后臺時,系統(tǒng)可能將數(shù)據(jù)保存起來而讓程序進(jìn)行休眠,或者僅僅運(yùn)行部分服務(wù),僅僅當(dāng)收到相關(guān)的申請時才恢復(fù)部分進(jìn)程,處理完之后結(jié)束進(jìn)程而保留服務(wù)——這些都是自動處理的,也就是說,如果用戶運(yùn)行的軟件都是按照Android思想而設(shè)計的,那么除了明確有退出按鍵的一部分大型程序外,其他程序是都可以運(yùn)行后扔到后臺不用再管了的,當(dāng)某個程序需要更多RAM時,系統(tǒng)會自動釋放掉一些不重要且最近沒有使用的程序;而當(dāng)你打開某個曾經(jīng)打開的程序時,系統(tǒng)會先檢查RAM里是不是有這個程序的部分進(jìn)程,然后進(jìn)行恢復(fù),這樣可以更快打開它。 舉個最簡單的例子:加入你的安卓手機(jī)安裝了一些第三方的桌面插件,當(dāng)你再運(yùn)行一鍵殺后臺進(jìn)程的時候有很大的可能導(dǎo)致桌面程序被殺,結(jié)果手機(jī)頓時卡的無法正常運(yùn)行甚至報錯! 當(dāng)然了,如果智能手機(jī)本身RAM很小而且CPU不給力,系統(tǒng)自然會很頻繁的終止進(jìn)程釋放內(nèi)存,這就使得許多小內(nèi)存的手機(jī)用起來感覺一卡一卡的了。于是很多論壇都開始討論怎么樣使得全殺過后空閑內(nèi)存更大、怎樣禁止自動啟動某些進(jìn)程——結(jié)果空閑RAM確實(shí)大了,用起來反而更卡了——隨便切換個程序(如看書的時候來了個電話)系統(tǒng)都要重新啟動幾乎所有相關(guān)的進(jìn)程,怎么能反應(yīng)不遲鈍。 Android用RAM的方式,跟Windows、Windows Phone、Symbian是兩回事。在Android里,RAM被用滿了是件好事。它意味著你可以快速打開之前打開的軟件,回到之前的位置。所以Android很有效的使用RAM,很多用戶看到他們的RAM滿了,就認(rèn)為拖慢了他們的手機(jī)。而實(shí)際上,退出后重啟這些程序才真正拖慢了手機(jī)的響應(yīng)。而且這些自動殺進(jìn)程的軟件本身是個時刻活躍的進(jìn)程,它始終在后臺保持活躍使得CPU難以消停,反而增加了耗電量。 但是對于很多國內(nèi)軟件,用完之后還是按一下退出吧,而對于規(guī)范化的程序,以及系統(tǒng)自帶的那些程序(例如谷歌程序基本都沒有退出),用過之后放后臺就好。良好的手機(jī)使用習(xí)慣需要保持,就比如說不用的程序及時關(guān)掉,比如一些游戲程序,瀏覽器之類的在使用結(jié)束后完全是可以關(guān)閉的,這樣既騰出了內(nèi)存也會降低耗電量。 幾點(diǎn)建議 1、安裝的應(yīng)用夠用就好,如果你不是玩機(jī)發(fā)燒友,裝幾個必備的應(yīng)用和一些自己需要的應(yīng)用即可,無需安裝過多的程序,否則會導(dǎo)致手機(jī)變慢,尤其是一些內(nèi)存較小的機(jī)型。 2、應(yīng)用安裝較多的時候,適當(dāng)?shù)倪M(jìn)行刪減,對于不常用,或是安裝后覺得沒用的軟件要及時卸載,以免占用手機(jī)空間,影響手機(jī)的使用。 3、養(yǎng)成按“返回鍵”或是程序自帶的退出功能來退出應(yīng)用的好習(xí)慣,如果不是為了要將程序切換至后臺運(yùn)行,就不要使用“房子鍵”退出,按“房子鍵”是將程序切至后臺運(yùn)行,并沒有真正的退出,而按“返回鍵”或是通過軟件的退出功能退出才是正在完全退出程序。 4、使用任務(wù)管理功能,結(jié)束一些后臺不用的程序或服務(wù),來釋放更多的內(nèi)存,提高手機(jī)運(yùn)行速度。 5、如果您的手機(jī)硬件配置不是很好,可以適當(dāng)?shù)年P(guān)閉手機(jī)中的一些窗口動畫特效,來提高手機(jī)的運(yùn)行和操作速度。 6、定期清理手機(jī)中的緩存垃圾,釋放更多的手機(jī)空間,換手機(jī)一個健康綠色的運(yùn)行環(huán)境。 7、如藍(lán)牙,wifi,同步,GPS等這類的功能開關(guān),如果不是經(jīng)常使用,可以考慮關(guān)閉它們,用到時再開啟,這樣可以節(jié)約更多的電量,獲取更多的待機(jī)時間。 8、通過開機(jī)優(yōu)化功能,查看一些開機(jī)啟動項(xiàng)目,無需開機(jī)使用的應(yīng)用就將其禁止,以免開機(jī)后消耗過多的資源。 9、如果對手機(jī)不是特別了解,不要隨意亂安裝一些高級軟件使用,如:需要root權(quán)限,或是可以修改系統(tǒng)功能的一些應(yīng)用,此類程序可能會因?yàn)椴僮鞑划?dāng),出現(xiàn)一些未知問題。 10、如果手機(jī)出現(xiàn)了未知問題,或是經(jīng)過長時間使用導(dǎo)致系統(tǒng)緩慢不穩(wěn)定,可以在設(shè)置──隱私設(shè)置中選擇恢復(fù)出廠設(shè)置,來實(shí)現(xiàn)清空所有數(shù)據(jù)、恢復(fù)初始狀態(tài)。注意,進(jìn)行該操作前記得備份一下手機(jī)中的重要內(nèi)容。 這樣是不是對你手機(jī)為什么會卡頓,以及手機(jī)后臺多了一些了解呢?希望這些對你更好地使用你的手機(jī)有幫助。 |