Android性能優(yōu)化全方面解析
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
目的
公司的新需求終于解決完了,離測(cè)試和發(fā)布還有段時(shí)間,第一次體驗(yàn)了下沒需求沒bug的感覺,真是舒爽,然后翻了翻有什么可以學(xué)的。無(wú)意翻到了Android后期發(fā)展的五大趨勢(shì)。一、性能優(yōu)化。二、高級(jí)UI。三、JNI/NDK開發(fā)。四、架構(gòu)師。五、RN開發(fā)。這也許將會(huì)是我的進(jìn)階趨勢(shì)。早已知道在瓶頸期的我,似乎看到了突破的希望的。初級(jí)進(jìn)階中級(jí)也好,中級(jí)進(jìn)階高級(jí)也罷,現(xiàn)在的市場(chǎng)無(wú)非是根據(jù)經(jīng)驗(yàn)規(guī)定的,根據(jù)能力的少之又少。
其實(shí),關(guān)注我的或者在群里的小伙伴也知道,UI那塊我問題不大。但是高級(jí)UI就有難度了。我們先不管他,一個(gè)一個(gè)來。先從性能優(yōu)化來。其實(shí)我是拒絕寫這篇文章的。為什么?性能優(yōu)化的分類很多,一個(gè)分類寫一篇感覺篇幅量很小,結(jié)合在一起寫有感覺很大。而我目前打算整體的整理一下。
那么我們先分析下性能優(yōu)化有那幾個(gè)方面:一、內(nèi)存優(yōu)化。二、UI優(yōu)化(布局優(yōu)化和繪制優(yōu)化)。三、速度的優(yōu)化(線程優(yōu)化/網(wǎng)絡(luò)優(yōu)化)。四、電量?jī)?yōu)化。五、啟動(dòng)優(yōu)化。應(yīng)該就這些了。那么這只是五大方面,里面還結(jié)合了各種細(xì)節(jié)方面的。不急,我們下面一個(gè)個(gè)地介紹。
內(nèi)存優(yōu)化
關(guān)于性能優(yōu)化我們可以不知道其他的,但一定要知道內(nèi)存優(yōu)化。因?yàn)閮?nèi)存泄漏可以Android的??汀D敲词裁词莾?nèi)存泄漏呢??jī)?nèi)存不在GC的掌控范圍之內(nèi)了。那么Java的GC內(nèi)存回收機(jī)制是什么?某對(duì)象不在有任何引用的時(shí)候才會(huì)進(jìn)行回收。那么GC回收機(jī)制的原理是什么?又或者說可以作為GC Root引用點(diǎn)的是啥?或許有人聽不懂我在講啥。我們先來看張圖。
當(dāng)我們向上尋找,一直尋找到GC Root的時(shí)候,此對(duì)象不會(huì)進(jìn)行回收,例如,一個(gè)Activity。那么如果我們向上尋找,直到找到GC Root對(duì)象的時(shí)候,就說明它是不可以回收的,例如,我定義了一個(gè)int a;但是這個(gè)數(shù)據(jù),我整個(gè)頁(yè)面或者說整個(gè)項(xiàng)目都沒有用到,則這個(gè)對(duì)象會(huì)被GC掉。
GC的引用點(diǎn)
1. Java棧中引用的對(duì)象
2. 方法靜態(tài)引用的對(duì)象
3. 方法常量引用的對(duì)象
4. Native中JNI引用的對(duì)象
5. Thread——“活著的”線程
如何判斷
那么我們?nèi)绾闻袛嘁粋€(gè)對(duì)象是一個(gè)垃圾對(duì)象,可以講他進(jìn)行回收呢?舉了小例子教你們?nèi)绾螀^(qū)分:
一般在學(xué)校吃飯,我們有兩種情況,第一:吃完飯就直接走人,碗筷留給阿姨來收拾處理。
第二:吃完之后把碗筷放到收盤處直接進(jìn)行回收。
但我們是個(gè)有素質(zhì)的人,一般采用第二種情況,但根據(jù)想法,我們更傾向于第一種。
那么一般在飯店或者KFC中,都是第一種情況。
那么此時(shí),問題來了,如果我已經(jīng)吃完飯,然后我并沒有離開飯店,做在位置上和朋友吹吹牛逼,談?wù)劺硐?,聊聊人生?/p>
那么桌上那一堆碗筷是收還是不收?講道理是不能收的。雖然實(shí)際也是不能收的。因?yàn)轭櫩褪巧系踾~~
So,我們?nèi)绾闻袛嘁粋€(gè)對(duì)象是一個(gè)可回收的垃圾對(duì)象呢?這是我們的一個(gè)主觀的判斷。但是有種情況我們是必須要考慮到的,沒錯(cuò),就是內(nèi)存過多無(wú)法釋放的時(shí)候,會(huì)直接導(dǎo)致OOM。整個(gè)項(xiàng)目boom炸了。什么鬼?outofmemory。沒錯(cuò)就是它。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
Android性能優(yōu)化全方面解析下載
相關(guān)電子資料下載
- 社區(qū)說|多才多藝: 探索 Android 應(yīng)用更多可能 13
- 浩辰軟件正式登陸上交所科創(chuàng)板 274
- 鴻蒙原生應(yīng)用,對(duì)開發(fā)者意味著什么? 77
- Android端自定義鈴聲 MobPush對(duì)安卓端自定義鈴聲的教程 531
- Android推送問題排查技巧 針對(duì)MobPush安卓端推送問題的解決辦法 54
- 如何使用Proxyman抓取Android的https請(qǐng)求? 43
- 基于OkHttp 3.10.0的源碼案例解析 26
- 基于MacroBenchmark的性能測(cè)試量化指標(biāo)方案 77
- 圖像放大為什么還能保持清晰度 圖像縮放的原理是什么 45
- 智能門鎖產(chǎn)品中應(yīng)用的抗干擾低功耗觸摸感應(yīng)芯片 92