雜談:後臺進程對Android性能的影響

Android現在這麼火,各種的設備也是琳瑯滿目,高中低等,大小屏幕都有,但是它始終未能達到iOS那樣的令人稱贊的卓越體驗和性能,其操作的流暢度,性能和安全性方面總是略輸iOS一籌。據說iPhone4雖然是單核512M內存,但是比Android的雙核1G內存的操作起來更流暢,iPad2雖然是也隻有512M的內存但是操作起來比Android四核1G內存還要流暢。另外在安全性方面也不如iOS。
 
造成Android性能,待機時間,操作流暢和安全性不好的原因是Android後臺進程的管理。
 
Android的進程管理很差勁,這也是它性能差的原因,操作的流暢性,待機時間,性能都跟進程管理,特別是後臺進程的管理有很大關系。打開手機一看,有幾十條進程在跑,比如短信,郵件,輸入法等系統核心應用,另外還有很多很應用也都在後臺運行,不管是否是用戶啟動的,很多應用都在後面跑,這點已經成為Android用戶最受困擾的地方。更為可氣的是很多進程用任務管理器,進程殺手等工具殺都殺不掉。
 
主要的原因就是Android中的關鍵的組件都有著過長的生命周期,比如BroadcastReceiver和Service,還有就是線程的不正當應用。Service就是專門用於在後臺長期運行的組件,用以在後臺完成長期的任務比如在後臺播放歌曲,在後臺接收郵件和短信等等。BroadcastReceiver是一種長期存在的組件,它正常時候是處於不活躍的,隻有當其感興趣的Intent廣播出現時就被激活,雖然它不活躍,但是它依然活著,它所在的進程依然運行。此外,Activity也可以長期的運行,通過moveTaskToBack()就可以不銷毀的把Activity放到後臺去,或者在Activity中運行Thread,如果在Activity銷毀時沒把Thread停止,那麼Thread就會仍然運行,進程就會仍然運行。
 
這是Android系統架構決定的,對於有組件在運行的進程,即使用任務管理器把它殺掉,那麼ActivityManager還會把這個進程重啟。所以對於Android的程序來講,需要開發者的努力才能正確的應用這些組件讓應用在用戶用到的時候運行,不需要的時候就完全退出。
 
但是造成現在大多數的應用都在後臺偷偷的跑的原因還主要是Android開發者的原因。
 
眾所周知,Android開發者盈利並不是很好,所以開發者就不願意在優化性能方面做太多的精力投入,因為它無法得到回報。
 
另外就是,因為無法盈利,所以就讓程序在後臺跑,收集收集一些用戶的使用習慣和一些數據等,以便作為後續開發的參考數據。
 
iOS的設備就沒有這樣的情況,它對於後臺進程的控制相當的嚴格,程序退出瞭,就是退出瞭,另外在它的近期應用條中(雙擊Home鍵,或四指觸摸向上拉),長按應用後,點擊左上方的頭號,即可關閉應用,而且關閉瞭應用不會再次啟動,除非用戶啟動它。這裡不管應用是否真正退出瞭,至少從用戶角度來看是退出瞭

摘自 浪人的星空

發佈留言