Android面試大全(性能優(yōu)化篇)

Android面試大全(四大組件篇)
Android面試大全(性能優(yōu)化篇)
Android面試大全(異常處理篇)
Android面試大全(開源框架篇)
Android面試大全(網(wǎng)絡(luò)篇)
Android面試大全(java篇)


前言

android中的性能優(yōu)化這一方面不止是一道面試題狰闪,也是項(xiàng)目中必須要做的一件事情诱贿,只有做好的性能方面的優(yōu)化,用戶體驗(yàn)滿意度才會有所提升

分類

啟動黑白屏問題

  • 安裝app后厚棵,啟動時(shí)會有短暫的白屏,這大大影響整體的美觀引颈,姑且在這里也給算在性能優(yōu)化這一塊
    • 出現(xiàn)白屏原因
      系統(tǒng)加載布局文件是需要時(shí)間的联四,在剛啟動時(shí)布局文件還沒加載完畢(即setContentView(int)之前)顯示的是window背景,出現(xiàn)的白屏(或黑屏)是window的背景色
    • 解決辦法
    • 替換window的背景(可為圖片或純色)
      只需在啟動activity界面根標(biāo)簽下設(shè)置android:theme="@style/MyTheme"屬性
      自定義一個(gè)style
  <style name="Mytheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@mipmap/ic_launcher</item>//設(shè)置圖片
        <item name="ndroid:windowBackground">@color/fireBar</item>//設(shè)置純色
        <item name="android:windowNoTitle">true</item>//去title
    </style>
  • 注意事項(xiàng)
    • 設(shè)置屬性只能設(shè)置在啟動頁仑濒,不能設(shè)置在application標(biāo)簽下叹话,此標(biāo)簽代表全局
    • 設(shè)置圖片最好是.9.png類型圖片(此種圖可適配機(jī)型),若使用.png圖片需考慮不同機(jī)型適配問題(切多種分表率的圖)

布局優(yōu)化

  • 減少嵌套的層級(可使用RelativeLayout),減少嵌套層級可加快加載效率墩瞳,
  • 使用style提取相同view的公共屬性驼壶,減少重復(fù)代碼
  • 使用include標(biāo)簽
  • 合理使用ViewStub

圖片的優(yōu)化

android中圖片的使用是非常占用內(nèi)存資源的。

  • ①:在圖片未使用時(shí)喉酌,及時(shí)recycle()回收
  • ②:使用三級緩存热凹,內(nèi)存-sd卡-網(wǎng)絡(luò)
    內(nèi)存中再次獲取最快,由于內(nèi)存有限可能被gc回收泪电,sd卡中的圖片不會回收般妙,當(dāng)前面兩種都不存在所需圖片時(shí),才去網(wǎng)洛下載
  • ③:將大圖片進(jìn)行壓縮處理再放到內(nèi)存中相速,用到BitmapFactory
/**創(chuàng)建縮略圖方法
*filepath 圖片路徑
 i  壓縮比例,最終為原圖的1/(i^2)
*/
 private Bitmap onCreateThumbnail(String filePath, int i) {
         BitmapFactory.Options options=new BitmapFactory.Options();
        //設(shè)置為不讀內(nèi)容碟渺,值讀取邊界值
          options.inJustDecodeBounds=true;
         //通過編輯,得到邊界值突诬,并存入到option中
         BitmapFactory.decodeFile(filePath,options);
        //賦值縮放比例
         options.inSampleSize=i;
         //設(shè)置顯示的圖片格式
         options.inPreferredConfig=Config.RGB_565;
         //設(shè)置為讀取內(nèi)容苫拍,
         options.inJustDecodeBounds=false;
        //得到縮略圖
         return BitmapFactory.decodeFile(filePath2, options);
     }
  • ④:盡量不在Button上使用selector來設(shè)置點(diǎn)擊與正常時(shí)背景圖,因?yàn)樵赽utton初始化時(shí)會將選中狀態(tài)與正常狀態(tài)的兩張圖都加載都內(nèi)存中旺隙,無疑在無意中加大了內(nèi)存的占用怯疤,可xml中設(shè)置正常的背景,在setOnTouchListener監(jiān)聽中通過代碼動態(tài)改變,在按下時(shí)顯示選中狀態(tài)北京催束,抬起恢復(fù)
final Button button=new Button(this);
        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        //手指按下
                        button.setBackgroundResource(R.mipmap.down);
                        break;
                    case MotionEvent.ACTION_UP:
                        //手指抬起集峦,恢復(fù)
                        button.setBackgroundResource(R.mipmap.up);
                        break;
                }
                //為了監(jiān)聽事件的分發(fā),返回false
                return false;
            }
        });
  • 圖片解碼率也會影響圖片所占內(nèi)存
    常見的png抠刺,JPG塔淤,webp等格式的圖片在設(shè)置到UI上之前需要經(jīng)過解碼過程,而圖片采用不同的碼率速妖,也會造成對內(nèi)存的占用不同高蜂。
    • ARGB_4444 格式的解碼率,這種格式的圖片罕容,看起來質(zhì)量太差备恤,已經(jīng)不推薦使用稿饰。 而強(qiáng)烈推薦使用ARGB_8888來代替。一個(gè)像素占用2個(gè)字節(jié)露泊,alpha(A)值喉镰,Red(R)值,Green(G)值惭笑,Blue(B)值各占4個(gè)bites 侣姆。 共16bytes,即2個(gè)字節(jié)
  • ARGB_8888 格式的解碼率沉噩,一個(gè)像素占用4個(gè)字節(jié)捺宗,alpha(A)值,Red(R)值川蒙,Green(G)值蚜厉,Blue(B)值各占8個(gè)bytes , 共32bytes , 即4個(gè)字節(jié)畜眨。這是一種高質(zhì)量的圖片格式弯囊,電腦上普通采用的格式。它也是Android手機(jī)上一個(gè)BitMap的默認(rèn)格式胶果。
  • RGB_565格式的解碼率,一個(gè)像素占用2個(gè)字節(jié)斤斧,沒有alpha(A)值早抠,即不支持透明和半透明, Red(R)值占5個(gè)bytes 撬讽,Green(G)值占6個(gè)bytes 蕊连,Blue(B)值占5個(gè)bytes,共16bytes,即2個(gè)字節(jié)。 對于半透明顏色的圖片來說游昼,該格式的圖片能夠達(dá)到比較好的呈現(xiàn)效果甘苍,相對于ARGB_8888來說也能減少一半的內(nèi)存開銷,因此它是一個(gè)不錯(cuò)的選擇烘豌。推薦使用

大量數(shù)據(jù)優(yōu)化

  • 分頁加載
  • 緩存方式

列表項(xiàng)優(yōu)化

  • listview的優(yōu)化
    • convertview的復(fù)用(View的復(fù)用)
    • viewholder類的使用载庭,減少查找控件的次數(shù)(findviewbyid()次數(shù)),將holder與view綁定來實(shí)現(xiàn)(.setTag()廊佩、.getTag()
    • 數(shù)據(jù)分頁加載
  • RecycleView的優(yōu)化

其他優(yōu)化

  • 網(wǎng)絡(luò)優(yōu)化
    • 同一個(gè)頁面數(shù)據(jù)盡量放到一個(gè)接口中去處理
  • 使用Application Context代替Activity Context
  • 謹(jǐn)慎使用static 關(guān)鍵字
    • static使用不當(dāng)容易造成內(nèi)存泄漏
  • 數(shù)據(jù)庫優(yōu)化
  • 電量優(yōu)化
  • 多線程并發(fā)引發(fā)的性能等

正在持續(xù)跟新中……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囚聚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子标锄,更是在濱河造成了極大的恐慌顽铸,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件料皇,死亡現(xiàn)場離奇詭異谓松,居然都是意外死亡星压,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門鬼譬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娜膘,“玉大人,你說我怎么就攤上這事拧簸【⑿鳎” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵盆赤,是天一觀的道長贾富。 經(jīng)常有香客問我,道長牺六,這世上最難降的妖魔是什么颤枪? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮淑际,結(jié)果婚禮上畏纲,老公的妹妹穿的比我還像新娘。我一直安慰自己春缕,他們只是感情好盗胀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锄贼,像睡著了一般票灰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宅荤,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天屑迂,我揣著相機(jī)與錄音,去河邊找鬼冯键。 笑死惹盼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惫确。 我是一名探鬼主播手报,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼改化!你這毒婦竟也來了昧诱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤所袁,失蹤者是張志新(化名)和其女友劉穎盏档,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燥爷,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜈亩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年懦窘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚配。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡畅涂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出道川,到底是詐尸還是另有隱情午衰,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布冒萄,位于F島的核電站臊岸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尊流。R本人自食惡果不足惜帅戒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望崖技。 院中可真熱鬧逻住,春花似錦、人聲如沸迎献。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吁恍。三九已至扒秸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間践盼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工宾巍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咕幻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓顶霞,卻偏偏與公主長得像肄程,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子选浑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容