解析后臺進程對Android性能影響的詳解
Android現(xiàn)在這么火,各種的設備也是琳瑯滿目,高中低等,大小屏幕都有,但是它始終未能達到iOS那樣的令人稱贊的卓越體驗和性能,其操作的流暢度,性能和安全性方面總是略輸iOS一籌。據(jù)說iPhone4雖然是單核512M內(nèi)存,但是比Android的雙核1G內(nèi)存的操作起來更流暢,iPad2雖然是也只有512M的內(nèi)存但是操作起來比Android四核1G內(nèi)存還要流暢。另外在安全性方面也不如iOS。
造成Android性能,待機時間,操作流暢和安全性不好的原因是Android后臺進程的管理。
Android的進程管理很差勁,這也是它性能差的原因,操作的流暢性,待機時間,性能都跟進程管理,特別是后臺進程的管理有很大關系。打開手機一看,有幾十條進程在跑,比如短信,郵件,輸入法等系統(tǒng)核心應用,另外還有很多很應用也都在后臺運行,不管是否是用戶啟動的,很多應用都在后面跑,這點已經(jīng)成為Android用戶最受困擾的地方。更為可氣的是很多進程用任務管理器,進程殺手等工具殺都殺不掉。
主要的原因就是Android中的關鍵的組件都有著過長的生命周期,比如BroadcastReceiver和Service,還有就是線程的不正當應用。Service就是專門用于在后臺長期運行的組件,用以在后臺完成長期的任務比如在后臺播放歌曲,在后臺接收郵件和短信等等。BroadcastReceiver是一種長期存在的組件,它正常時候是處于不活躍的,只有當其感興趣的Intent廣播出現(xiàn)時就被激活,雖然它不活躍,但是它依然活著,它所在的進程依然運行。此外,Activity也可以長期的運行,通過moveTaskToBack()就可以不銷毀的把Activity放到后臺去,或者在Activity中運行Thread,如果在Activity銷毀時沒把Thread停止,那么Thread就會仍然運行,進程就會仍然運行。
這是Android系統(tǒng)架構(gòu)決定的,對于有組件在運行的進程,即使用任務管理器把它殺掉,那么ActivityManager還會把這個進程重啟。所以對于Android的程序來講,需要開發(fā)者的努力才能正確的應用這些組件讓應用在用戶用到的時候運行,不需要的時候就完全退出。
但是造成現(xiàn)在大多數(shù)的應用都在后臺偷偷的跑的原因還主要是Android開發(fā)者的原因。
眾所周知,Android開發(fā)者盈利并不是很好,所以開發(fā)者就不愿意在優(yōu)化性能方面做太多的精力投入,因為它無法得到回報。
另外就是,因為無法盈利,所以就讓程序在后臺跑,收集收集一些用戶的使用習慣和一些數(shù)據(jù)等,以便作為后續(xù)開發(fā)的參考數(shù)據(jù)。
iOS的設備就沒有這樣的情況,它對于后臺進程的控制相當?shù)膰栏?,程序退出了,就是退出了,另外在它的近期應用條中(雙擊Home鍵,或四指觸摸向上拉),長按應用后,點擊左上方的頭號,即可關閉應用,而且關閉了應用不會再次啟動,除非用戶啟動它。這里不管應用是否真正退出了,至少從用戶角度來看是退出了。
- Android應用開發(fā)SharedPreferences存儲數(shù)據(jù)的使用方法
- Android 動畫之TranslateAnimation應用詳解
- Android 動畫之ScaleAnimation應用詳解
- Android開發(fā)中多進程共享數(shù)據(jù)簡析
- Android 多進程資料總結(jié)
- Android 進程間通信實現(xiàn)原理分析
- Android應用程序四大組件之使用AIDL如何實現(xiàn)跨進程調(diào)用Service
- Android編程防止進程被第三方軟件殺死的方法
- Android結(jié)束進程的方法詳解
- Android中應用多進程的整理總結(jié)
相關文章
Android如何讓APP無法在指定的系統(tǒng)版本上運行(實現(xiàn)方法)
這篇文章主要介紹了Android如何讓APP無法在指定的系統(tǒng)版本上運行(實現(xiàn)方法),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02