Android 性能優(yōu)化系列-能耗篇(一)

? ??前言:現(xiàn)在市場(chǎng)上很多App裝上之后發(fā)現(xiàn)手機(jī)變燙,每月流量猛增的問(wèn)題。開(kāi)篇前先講一個(gè)不恰當(dāng)?shù)亩巫訜釤嵘戆桑骸澳吵绦蛟惩瑫r(shí)攜帶某米手機(jī)和某星手機(jī)過(guò)機(jī)場(chǎng)安檢被抓了起來(lái),被指懷疑其蓄意攜帶定時(shí)爆炸物”。

? ?技術(shù)背景:能耗問(wèn)題其實(shí)主要和App對(duì)CPU\GPU消耗使用率成一個(gè)比例關(guān)系的。我暫且總結(jié)為:電量消耗+流量消耗。其實(shí)這兩者也是互相牽制的。


? ?Ok,讓我們從代軟件開(kāi)發(fā)者的角度來(lái)深入剖析一下。

?電能消耗:

● 網(wǎng)絡(luò)請(qǐng)求耗電:按照系統(tǒng)層次原理,使用4G網(wǎng)絡(luò)遠(yuǎn)遠(yuǎn)比WIFI更耗電,因?yàn)槭謾C(jī)網(wǎng)絡(luò)需要調(diào)用更底層的硬件模塊。還有一點(diǎn)在網(wǎng)絡(luò)切換監(jiān)聽(tīng)廣播中代碼注意精簡(jiǎn),去除耗時(shí)過(guò)重的操作。

● UI頁(yè)面嵌套太深、頻繁刷新:Layout繪制的過(guò)程是經(jīng)過(guò)一連串的計(jì)算最終渲染,如果開(kāi)發(fā)者在編寫(xiě)的UI中嵌套太深很容易造成卡頓的同時(shí)還造成了電能的過(guò)于消耗。具體如何解決,可以看下我之前的文章:Android 性能優(yōu)化系列-UI篇

● 頻繁的IO、數(shù)據(jù)庫(kù)操作:在短時(shí)間頻繁讀寫(xiě)會(huì)造成手機(jī)消耗大量電能。

● 定時(shí)任務(wù):手機(jī)上的設(shè)置JOB非萬(wàn)不得已建議不要去嘗試。如定時(shí)拉服務(wù)器數(shù)據(jù),即便你用 AlarmManager也是一樣,要不停的喚醒CPU執(zhí)行任務(wù),造成電量消耗。

● 數(shù)據(jù)傳輸、解析:盡量不要用XML解析交互,使用Json、 Protobuf 。數(shù)據(jù)壓縮傳輸。避免頻繁的進(jìn)制轉(zhuǎn)換等等。

● 定位服務(wù):GPS打開(kāi)后會(huì)不停的合理選擇定位服務(wù)的方式,可以使用wifi定位、移動(dòng)網(wǎng)絡(luò)定位來(lái)取代GPS定位。按照實(shí)際場(chǎng)景

●? WakeLock的不合理使用

● 對(duì)象回收:要記住手動(dòng)回收對(duì)象有百里無(wú)一害。

流量消耗:

● 還是網(wǎng)絡(luò)請(qǐng)求:請(qǐng)求頻次過(guò)多,盡量減少請(qǐng)求報(bào)文大小,返回報(bào)文包大小。包括合理的網(wǎng)絡(luò)請(qǐng)求緩存。

● 心跳包: 和服務(wù)端交互的定時(shí)心跳,盡量避免直接傳輸String。判斷當(dāng)前app是否在前臺(tái)來(lái)調(diào)節(jié)頻次。

● 拒絕輪詢(xún)調(diào)用服務(wù)端接口。

● 推送頻繁、內(nèi)容過(guò)大:合理采用推送渠道,用業(yè)務(wù)字段id取代內(nèi)容字符集。

● 文件下載:在確保大文件壓縮前提下,合理使用內(nèi)存、磁盤(pán)存儲(chǔ),避免重復(fù)下載。

● 無(wú)視了用戶(hù)的網(wǎng)絡(luò)環(huán)境:在業(yè)務(wù)允許下盡量區(qū)分當(dāng)前是否是wifi狀態(tài),合理走流量。

? ?????總結(jié):個(gè)人覺(jué)得整體的優(yōu)化是一個(gè)協(xié)調(diào)復(fù)雜的過(guò)程,需要客戶(hù)端、服務(wù)端,當(dāng)然還會(huì)涉及到服務(wù)器的部署方式、產(chǎn)品的需求、業(yè)務(wù)運(yùn)維的方式等等。

未完待續(xù)。。。(如何檢查能耗及細(xì)節(jié)解決方案)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評(píng)論 25 708
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,556評(píng)論 6 13
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評(píng)論 19 139
  • 我好想要有遺世獨(dú)立的勇氣 世間所有都與我無(wú)關(guān)好不好 所有的煩惱憂(yōu)愁都走好不好 就當(dāng)我是顆頑固石頭好不好 別再不懂我...
    迪迦才沒(méi)有拉鏈呢閱讀 215評(píng)論 0 0
  • 前兩天,一張老母親送別回城兒子的照片在朋友圈流傳開(kāi)來(lái),白發(fā)蒼蒼的母親把頭探進(jìn)車(chē)內(nèi)叮囑著,眼神中透露出無(wú)盡的留戀。這...
    胡桃?jiàn)A子怪閱讀 424評(píng)論 3 3

友情鏈接更多精彩內(nèi)容