目前市面上關(guān)于Android 性能優(yōu)化的文章實(shí)在多到數(shù)不勝數(shù),但整體質(zhì)量欠佳,要么太過(guò)片面,要么故弄玄虛,基本都是簡(jiǎn)單雷同的拼湊,并沒(méi)有形成整體且系統(tǒng)的優(yōu)化思路,那有沒(méi)有一篇覆蓋全面,簡(jiǎn)單易懂,適合大多數(shù)初中級(jí)開(kāi)發(fā)/測(cè)試人員看的性能優(yōu)化文章呢?答案是有的,就是本文(系列)。
在進(jìn)入具體的內(nèi)容之前,別急,先讓我們捋一捋何謂性能優(yōu)化以及如何下手(切入點(diǎn))。
性能優(yōu)化有兩個(gè)側(cè)重點(diǎn),一個(gè)是以提高為主,就像考試把分?jǐn)?shù)從70分提高到90分,本來(lái)也能用,即使不提高也沒(méi)關(guān)系,但提高了以后更有競(jìng)爭(zhēng)力。比如縮短啟動(dòng)/頁(yè)面打開(kāi)時(shí)間,優(yōu)化動(dòng)畫(huà)執(zhí)行效率,加快啟動(dòng)速度,APK包瘦身,總之讓?xiě)?yīng)用跑的更快更流暢;另一個(gè)是穩(wěn)定性為主,避免運(yùn)行一段時(shí)間后的內(nèi)存泄漏或者OOM等,就像是考試盡量保持在70分以上,避免降到60分以下不及格,那樣會(huì)影響應(yīng)用的使用。
我們的系列針對(duì)后者,或者說(shuō)是針對(duì)于穩(wěn)定性優(yōu)化。
接下來(lái)的問(wèn)題就是 怎么判斷當(dāng)前的性能是多少分?如果性能很差,比如明顯的卡頓和OOM,那么肉眼就可見(jiàn),直接就可以判定不合格,但如果不那么明顯的話靠人的主觀就不好判斷了,這時(shí)候就需要依靠工具監(jiān)控。如同醫(yī)生給人做體檢一樣,把身體全部檢查一遍,最后給出體檢報(bào)告。所以,對(duì)于應(yīng)用來(lái)說(shuō),”體檢”是發(fā)現(xiàn)性能問(wèn)題的關(guān)鍵。這里引申出線上和線下場(chǎng)景的概念。


線下場(chǎng)景:說(shuō)白了就是辦公室里可以直接連接設(shè)備進(jìn)行debug,不管是用Android studio還是adb都可以方便的分析。
線上場(chǎng)景,真實(shí)的線上環(huán)境,無(wú)法直接debug,不方便分析。
有人說(shuō)那只考慮線下場(chǎng)景唄,先保證開(kāi)發(fā)自測(cè)這一環(huán)是沒(méi)多大問(wèn)題,這樣是沒(méi)錯(cuò),但是覆蓋率不高,因?yàn)榫€上和線下環(huán)境還是差的蠻多的,有時(shí)候在線下測(cè)得好好的,但是一到線上就各種問(wèn)題了。線上的場(chǎng)景和操作路徑五花八門(mén),不是幾個(gè)測(cè)試用例就能覆蓋的了的。就像是看病,有些病只有癥狀出來(lái)了,醫(yī)生才好判斷,如果沒(méi)有癥狀,那就不好診斷了。
”體檢”的根本是能使用各種”儀器”進(jìn)行檢查, 會(huì)使用了儀器,那么病灶也就無(wú)所遁形了,這也是本文(系列)的重點(diǎn)。
針對(duì)線下場(chǎng)景,我們會(huì)從UI,CPU,內(nèi)存和整體去介紹相關(guān)工具的使用,針對(duì)線上場(chǎng)景我們主要介紹對(duì)內(nèi)存監(jiān)控的方法。
我們會(huì)把線上和線下分開(kāi)來(lái)講。需要注意,不管線上還是線下,它們的只是監(jiān)控手段不同,優(yōu)化的原理方向都是一致的。