
安卓手機自從問世以來,就一直因係統卡頓而為人所詬病,尤其是對比IOS係統流暢的操作體驗,安卓更是花了極大的力氣放到改善係統卡頓的問題上。七八年過去了,Google的努力收效還是很明顯的,安卓5.0之後,加之處理器和內存的升級,安卓手機確實流暢了不是一星半點,可是過個一年半載,原先流暢的手機又會卡卡停停了,難道係統也和電池一樣時間長了有損耗?為啥安卓係統就達不到IOS的流暢度呢?圈圈君今天來給大家答疑解惑。
為啥安卓係統不如IOS流暢?

一是先天不足:在Linux上跑個虛擬機,再用JAVA做開發,雖然能減輕開發負擔,獲得資源支持,但在後期優化上的成本增加更多,Java不像iOS,不能提供任何操作來釋放內存(iOS的開發語言Object C能自行控製內存釋放),而是通過係統的內存回收機製來進行管理,但內存回收是個雙刃劍,GC(Gabage Collection,垃圾回收)時所有線程都要暫停,也就是所謂的我們經常遇到的機器卡頓。
二是後天開放帶來的混亂:強製與封閉,給iOS的應用帶來了高度的統一和標準,而開放的Android必然帶來混亂這樣的負面作用,碎片化是眾所周知的惡果,一些應用為了兼容更多舊設備,只能繼續使用低level的API,如微信,現在還是使用API level 9,就是為了能在Android 2.3係統的機型上使用,而Android 5.1支持的API level已達到22了,效率上顯然大打折扣,除此之外,開發上的開放性更是一個非常大的隱患,這也是今天要談的主要問題。
iOS為了流暢度,其實做了非常多的妥協來換取用戶體驗上的好感,比如墓碑式內存管理、優先UI渲染等,Google在2012年提出了黃油計劃(Project Butter),開始著手解決Android卡頓這個老大難問題,並從Android 5.0開始,將Dalvik虛擬機全面轉向ART虛擬機,後者在安裝應用的時候會進行預編譯,將代碼轉換為機器語言存儲在本地,這樣在運行程序時就不用每次都編譯一次,執行效率得到大大提升,同時,新的ART模式也降低了每次GC的時間,一些額外的優化也可以避免GC的頻繁發生。

Google的這些作為讓Android係統在流暢度上有了實質性的突破,從宏觀上講,Android是越來越不卡越來越流暢,那麼,在如今這麼強大的硬件支持下,為什麼還會讓很多人覺得越用越卡呢?
原來是APP在後臺搞的鬼!
Android應用開發有四大組件,其中之一就是廣播接收器(BroadcastReceiver,以下簡稱Receiver),你像一個監聽器,可以接收來自係統和應用中的廣播。
sponsored ads |
|
sponsored ads |
比如當電量發生變化時,係統會發生一條廣播,接收到這條廣播後,就能在電量低時告知用戶保存進度或進入省電模式;而當有電話進來,也同樣會產生一條廣播,這時係統就會通知電話接聽或電話號碼判斷等。
在Android中,全域的Receiver就近百種,它們可以監聽各色各樣的狀態變化,比如開關機、通電斷電、電量變化、網絡狀態變化、電話呼出呼入、安裝卸載應用、SD卡變化等。Android的開放性允許應用程序註冊任意一個Receiver, 這也成為流氓應用滋生的溫床,不良的開發者向係統註冊多個Receiver,讓它們接收各種廣播通知,然後執行相應的動作,比如自啟動。
所以,Android越用越卡的重要原因在於,後臺一直會有大量應用在默默運行,而這些應用根本就是清理不掉的,因為它們會在收到各種各樣的Receiver通知後再次啟動。作為對比,iOS中被殺掉的後臺進程再啟動的方法很有限,簡單的說,iOS是真的在清理內存,而Android中許多應用即使關閉仍想盡辦法不斷重生,各種進程與服務在後臺偷偷運行,從而引起係統卡頓與耗電,除了手機廠商,沒有任何應用開發商會為你的手機續航著想,所以從這一角度,我們應該是能理解這一行徑存在的原因的。
那這些應用是怎樣重生的呢?主要有兩種:自啟動和關聯喚醒。
sponsored ads |
|
sponsored ads |
自啟動,在我們意識裡,好像就等於Windows係統的開機自動運行,當然咱這樣想也沒錯,不過你想的確實太簡單了,開機自動運行只是眾多自啟動方式中的一種。在Windows中,你關閉某個軟件後,它基本上不會再自行啟動了,然後Android中由於有Receiver這玩意兒,它讓自啟動變得很容易。
我們來做個對比,就一目了然了,圈圈君用的是國外知名購物軟件eBay和我國的淘寶對比:

看到沒有,那些有的沒的係統變化,都能引起淘寶的自啟動,現在的軟件為了搶佔市場提高活躍度,已經和流氓沒有什麼區別了,手淘這個軟件已經算科技圈比較“規矩”的軟件了,讓我們來看看下面這款——

其他的就不說了,電量低也會被自啟動,百度雲你咋不上天呢?!
關聯喚醒,大家應該都有瞭解,也是相當具有中國特色的產物,簡單地講就是當一款應用啟動後,它會在後臺偷偷啟動另一款應用,基本上這些應用都有裙帶關係,百度和阿裡是其中代表。

上圖中,當運行“百度地圖”時,後臺會打開“百度雲”,當運行“手機淘寶時”,“支付寶”也同時在後臺開啟,這些都是你看不見的,你手機中的APP越多,那麼關聯喚醒的APP就會越多。
那我們怎樣改變卡頓的現狀呢?
1、儘量不要安裝使用頻率極低的APP,對於百度係、阿裡係、騰訊係等產品,儘量選用可替換的應用,如“百度瀏覽器”、“百度視頻”等都可以棄之。
2、對於操作能力強的玩家,推薦使用Xposed框架 + 綠色守護的解決方案。

綠色守護在科技圈裡,幾乎是Android手機必裝神器之一,它其實更像一個無限清理內存工具,啟動多少清理多少(只清理選定好的應用),以不變應萬變,用來應付各種疑難雜症,有效改善係統的流暢性與續航能力,非常推薦,它需要Xposed框架配合,安裝上需要較強動手能力。
3、如果你覺得Xposed框架安裝起來比較麻煩,當然也可以直接使用一些第三方管理工具,圈圈君推薦360衛士極客版,它能主動禁止掉每個APP的自啟動行為和切斷喚醒,理論上效果更好,就是需要針對操作。
sponsored ads |
|
sponsored ads |
如果你不喜歡360,試試LBE也不錯的。
相信大家看完圈圈君的科普對於安卓卡頓也有了一定瞭解,如果大家覺得手機有些卡頓的話,不妨試一試上面的方法,若不能有效解決也可以來QQ公眾號【科技圈】找到我們,圈圈君竭盡全力幫你答疑解惑~
|