解析后臺(tái)進(jìn)程對(duì)Android性能影響的詳解
Android現(xiàn)在這么火,各種的設(shè)備也是琳瑯滿目,高中低等,大小屏幕都有,但是它始終未能達(dá)到iOS那樣的令人稱贊的卓越體驗(yàn)和性能,其操作的流暢度,性能和安全性方面總是略輸iOS一籌。據(jù)說(shuō)iPhone4雖然是單核512M內(nèi)存,但是比Android的雙核1G內(nèi)存的操作起來(lái)更流暢,iPad2雖然是也只有512M的內(nèi)存但是操作起來(lái)比Android四核1G內(nèi)存還要流暢。另外在安全性方面也不如iOS。
造成Android性能,待機(jī)時(shí)間,操作流暢和安全性不好的原因是Android后臺(tái)進(jìn)程的管理。
Android的進(jìn)程管理很差勁,這也是它性能差的原因,操作的流暢性,待機(jī)時(shí)間,性能都跟進(jìn)程管理,特別是后臺(tái)進(jìn)程的管理有很大關(guān)系。打開(kāi)手機(jī)一看,有幾十條進(jìn)程在跑,比如短信,郵件,輸入法等系統(tǒng)核心應(yīng)用,另外還有很多很應(yīng)用也都在后臺(tái)運(yùn)行,不管是否是用戶啟動(dòng)的,很多應(yīng)用都在后面跑,這點(diǎn)已經(jīng)成為Android用戶最受困擾的地方。更為可氣的是很多進(jìn)程用任務(wù)管理器,進(jìn)程殺手等工具殺都?xì)⒉坏簟?/P>
主要的原因就是Android中的關(guān)鍵的組件都有著過(guò)長(zhǎng)的生命周期,比如BroadcastReceiver和Service,還有就是線程的不正當(dāng)應(yīng)用。Service就是專門用于在后臺(tái)長(zhǎng)期運(yùn)行的組件,用以在后臺(tái)完成長(zhǎng)期的任務(wù)比如在后臺(tái)播放歌曲,在后臺(tái)接收郵件和短信等等。BroadcastReceiver是一種長(zhǎng)期存在的組件,它正常時(shí)候是處于不活躍的,只有當(dāng)其感興趣的Intent廣播出現(xiàn)時(shí)就被激活,雖然它不活躍,但是它依然活著,它所在的進(jìn)程依然運(yùn)行。此外,Activity也可以長(zhǎng)期的運(yùn)行,通過(guò)moveTaskToBack()就可以不銷毀的把Activity放到后臺(tái)去,或者在Activity中運(yùn)行Thread,如果在Activity銷毀時(shí)沒(méi)把Thread停止,那么Thread就會(huì)仍然運(yùn)行,進(jìn)程就會(huì)仍然運(yùn)行。
這是Android系統(tǒng)架構(gòu)決定的,對(duì)于有組件在運(yùn)行的進(jìn)程,即使用任務(wù)管理器把它殺掉,那么ActivityManager還會(huì)把這個(gè)進(jìn)程重啟。所以對(duì)于Android的程序來(lái)講,需要開(kāi)發(fā)者的努力才能正確的應(yīng)用這些組件讓應(yīng)用在用戶用到的時(shí)候運(yùn)行,不需要的時(shí)候就完全退出。
但是造成現(xiàn)在大多數(shù)的應(yīng)用都在后臺(tái)偷偷的跑的原因還主要是Android開(kāi)發(fā)者的原因。
眾所周知,Android開(kāi)發(fā)者盈利并不是很好,所以開(kāi)發(fā)者就不愿意在優(yōu)化性能方面做太多的精力投入,因?yàn)樗鼰o(wú)法得到回報(bào)。
另外就是,因?yàn)闊o(wú)法盈利,所以就讓程序在后臺(tái)跑,收集收集一些用戶的使用習(xí)慣和一些數(shù)據(jù)等,以便作為后續(xù)開(kāi)發(fā)的參考數(shù)據(jù)。
iOS的設(shè)備就沒(méi)有這樣的情況,它對(duì)于后臺(tái)進(jìn)程的控制相當(dāng)?shù)膰?yán)格,程序退出了,就是退出了,另外在它的近期應(yīng)用條中(雙擊Home鍵,或四指觸摸向上拉),長(zhǎng)按應(yīng)用后,點(diǎn)擊左上方的頭號(hào),即可關(guān)閉應(yīng)用,而且關(guān)閉了應(yīng)用不會(huì)再次啟動(dòng),除非用戶啟動(dòng)它。這里不管應(yīng)用是否真正退出了,至少?gòu)挠脩艚嵌葋?lái)看是退出了。
- Android應(yīng)用開(kāi)發(fā)SharedPreferences存儲(chǔ)數(shù)據(jù)的使用方法
- Android 動(dòng)畫之TranslateAnimation應(yīng)用詳解
- Android 動(dòng)畫之ScaleAnimation應(yīng)用詳解
- Android開(kāi)發(fā)中多進(jìn)程共享數(shù)據(jù)簡(jiǎn)析
- Android 多進(jìn)程資料總結(jié)
- Android 進(jìn)程間通信實(shí)現(xiàn)原理分析
- Android應(yīng)用程序四大組件之使用AIDL如何實(shí)現(xiàn)跨進(jìn)程調(diào)用Service
- Android編程防止進(jìn)程被第三方軟件殺死的方法
- Android結(jié)束進(jìn)程的方法詳解
- Android中應(yīng)用多進(jìn)程的整理總結(jié)
相關(guān)文章
安卓(android)仿電商app商品詳情頁(yè)按鈕浮動(dòng)效果
很多電商類app的商品詳情頁(yè)(其他app也有類似效果,比如qq音樂(lè))都有這么一個(gè)效果:當(dāng)用戶向上滑動(dòng)頁(yè)面內(nèi)容超過(guò)一定距離后,中間的標(biāo)題欄會(huì)卡在頂部,往下拉回到固定高度后又會(huì)消失。那么如何實(shí)現(xiàn)這個(gè)效果呢?跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)。2016-08-08基于Android平臺(tái)實(shí)現(xiàn)拼圖小游戲
這篇文章主要為大家詳細(xì)介紹了基于Android平臺(tái)實(shí)現(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12Android實(shí)現(xiàn)圖片點(diǎn)擊爆炸效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圖片點(diǎn)擊爆炸效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08基于Android實(shí)現(xiàn)百度地圖定位過(guò)程詳解
這篇文章主要介紹了基于Android實(shí)現(xiàn)百度地圖定位過(guò)程詳解,需要的朋友可以參考下2015-11-11Android快速實(shí)現(xiàn)無(wú)預(yù)覽拍照功能
這篇文章主要為大家詳細(xì)介紹了Android快速實(shí)現(xiàn)無(wú)預(yù)覽拍照功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06Android如何讓APP無(wú)法在指定的系統(tǒng)版本上運(yùn)行(實(shí)現(xiàn)方法)
這篇文章主要介紹了Android如何讓APP無(wú)法在指定的系統(tǒng)版本上運(yùn)行(實(shí)現(xiàn)方法),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02Android 菜單欄DIY實(shí)現(xiàn)效果詳解
這篇文章主要為大家介紹了Android 菜單欄DIY實(shí)現(xiàn)效果詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09