Android應(yīng)用優(yōu)化方案寒瓦。

應(yīng)用穩(wěn)定性優(yōu)化

注:本文是為公司項目出優(yōu)化方案時所寫情屹,有一定針對性局限性坪仇,如有問題歡迎討論。

  1. 內(nèi)存優(yōu)化
    內(nèi)存優(yōu)化主要是規(guī)避內(nèi)存泄露和圖片及時回收垃你,以免導(dǎo)致內(nèi)存溢出系統(tǒng)拋出OOM錯誤椅文。監(jiān)測工具:DDMS Heap 分析內(nèi)存使用情況,LeakCanary 監(jiān)聽內(nèi)存泄露惜颇。
umeng后臺錯誤排行

具體優(yōu)化的功能點:

  • 首頁ViewPager+Fragment組合皆刺,修改viewpager策略,只保留當(dāng)前頁的數(shù)據(jù)內(nèi)容凌摄,其他頁面不在前臺則銷毀羡蛾,并把數(shù)據(jù)存到數(shù)據(jù)庫。并且為保證流暢性锨亏,在滑動時候初始化痴怨,在初始化時候讀數(shù)據(jù)庫數(shù)據(jù),在展示到前臺時拉去網(wǎng)絡(luò)數(shù)據(jù)(過多長時間以后)器予,實現(xiàn)懶加載浪藻。
  • 文章列表,建議縮小縮略圖展示尺寸乾翔,增加清晰度爱葵。并且每張圖的生命周期跟隨當(dāng)前頁面銷毀而釋放。
  • 包內(nèi)資源圖反浓,盡量進(jìn)行壓縮萌丈,UI壓縮,超大圖片盡量能夠用jpg格式替換png(Google是不建議這樣做的雷则,但是這樣顯示效果好占地少浓瞪,可以借用第三方工具加載)。
  • 使用LeakCanary 來監(jiān)測 內(nèi)存泄露情況巧婶,并逐個解決乾颁。常見內(nèi)存泄露有Handler 和Timer內(nèi)存泄露(使用軟引用持有Context),非靜態(tài)內(nèi)部類創(chuàng)建靜態(tài)實例造成的內(nèi)存泄漏等等艺栈。


    Android Studio 提示的Handler內(nèi)存泄漏
LeakCanary提示的靜態(tài)實例持有Context導(dǎo)致的內(nèi)存泄漏

*使用DDMS Heap 分析內(nèi)存使用情況以及使用Monitors查看內(nèi)存主動回收情況英岭。

DDMS Heap內(nèi)存使用分析
Monitors 內(nèi)存分析
  1. 布局優(yōu)化& 界面卡頓監(jiān)測
    開啟安卓手機(jī)GPU呈現(xiàn)模式分析,檢測應(yīng)用流暢度湿右。開啟安卓手機(jī)開發(fā)者選項中 Enable GPU Overdraw 诅妹,查看應(yīng)用繪制次數(shù),減少頁面重繪。使用BlockCanary 監(jiān)測UI卡頓現(xiàn)象吭狡。

    具體該怎么檢測界面是否卡頓:

    • 肉眼觀察
    • 在安卓手機(jī)開發(fā)者選項中開起幀率顯示尖殃,根據(jù)幀率判斷是否界面卡頓。
幀率測試圖
  • 第二開啟安卓手機(jī)開發(fā)者選項中的GPU呈現(xiàn)模式分析划煮,看條形圖分辨應(yīng)用是否卡頓送丰,什么時候卡頓。條形圖怎么看
Gpu呈現(xiàn)模式分析

具體該怎么檢測是否過度繪制:

首頁繪制情況
其他應(yīng)用的繪制情況
  • 查看DDMS中的 dump view hierarchy for ui automator 布局嵌套情況
DDMS 布局嵌套情況
  1. 友盟&BugTags 錯誤修改
    根據(jù)友盟或者bugtags錯誤信息器躏,定位到具體代碼,找出問題及時更改蟹略。減少錯誤率登失。
  2. 單元測試&MVP
    將 Model業(yè)務(wù)邏輯處理 和 View頁面處理分開,利用Android Studio中進(jìn)行單元測試和UI測試挖炬。
** 最終目標(biāo):錯誤率降低到千分之一以下 **

安裝包大小優(yōu)化

  1. 資源圖片優(yōu)化&無用資源文件刪減
    使用tinyPng進(jìn)行智能有損壓縮圖片揽浙。特大圖片使用jpg代替png。使用Android lint命令查找并刪除沒有用到的資源意敛。
壓縮前后照片清晰度對比
智能有損壓縮前后的大小
如果轉(zhuǎn)換為jpg格式大小
  1. 代碼混淆整理&剔除無用代碼
    刪除無用的代碼馅巷,整理混淆語法,對字節(jié)碼進(jìn)行縮減體積空闲、優(yōu)化令杈。
  2. 皮膚、表情包在線化(插件化)
    表情包和皮膚資源可以做成擴(kuò)展包形式一來可以云更新碴倾,還可以減少安裝包大小逗噩。
  3. 依賴庫整理&去除無用語言資源
    整理依賴庫,功能相近的庫擇小擇優(yōu)選取跌榔,去除重復(fù)庫异雁。通過配置resConfigs 只選擇英語和中文語言包。
** 最終目標(biāo):整包大小減少百分之40左右 **

網(wǎng)絡(luò)速度優(yōu)化

  1. 合并接口&優(yōu)化接口刪除冗余字段
    相近內(nèi)容合并到一個接口返回僧须,避免頻繁的網(wǎng)絡(luò)請求纲刀,刪除接口中的冗余字段,減少數(shù)據(jù)量担平。
  2. 新聞詳情緩存&考慮使用H5+原生形式實現(xiàn)正文
    使用HTML5瀏覽正文詳情(支持圖文混排且更流暢:目前的詳情會跳布局示绊,這樣會讓人感覺起來卡頓,因為展位圖并不能一定等于圖片大性萋邸)面褐,使用原生控件協(xié)助完成評論等其他交互。
  3. 預(yù)下載重要數(shù)據(jù)
    在wifi情況下后臺靜默下載取胎,必要資源展哭,比如應(yīng)用全局展示的廣告等等湃窍。
  4. 使用https
    使用https防止流量劫持、抓包及爬蟲匪傍。對通信內(nèi)容進(jìn)行加密您市。
** 最終目標(biāo):讓每一步網(wǎng)絡(luò)操作都能夠可接受時間內(nèi)得到響應(yīng) **

應(yīng)用省流優(yōu)化

  1. GIF預(yù)覽圖
    流量情況需要點擊Gif圖片才會動
  2. webP圖片格式
    服務(wù)端存儲用七牛,Android客戶端用Fresco(支持webP動圖)。
** 最終目標(biāo):盡可能的節(jié)省流量 **

多版本快速開發(fā)

  1. MVP架構(gòu)
    MVP分離了view和model層使之解耦役衡,方便進(jìn)行單元測試茵休,方便邏輯移植。
  2. 提出公共module
    同質(zhì)化功能點放到公共module中映挂,方便引用到其他項目中泽篮。
  3. 插件化開發(fā)
    根據(jù)功能點將應(yīng)用模塊化盗尸,例如直播柑船,錄制等等。
** 最終目標(biāo):功能快速移植泼各,降低代碼耦合度**

下期分享預(yù)告:

仿微信朋友圈(snapchat)圖片滑動退出手勢交互


下期分享預(yù)告

截圖來自: 橘子娛樂探索版(Android)

技術(shù)博客:Wells'Note

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鞍时,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扣蜻,更是在濱河造成了極大的恐慌逆巍,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莽使,死亡現(xiàn)場離奇詭異锐极,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)芳肌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門灵再,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亿笤,你說我怎么就攤上這事翎迁。” “怎么了净薛?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵汪榔,是天一觀的道長。 經(jīng)常有香客問我肃拜,道長痴腌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任燃领,我火速辦了婚禮士聪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柿菩。我一直安慰自己戚嗅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著懦胞,像睡著了一般替久。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躏尉,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天蚯根,我揣著相機(jī)與錄音,去河邊找鬼胀糜。 笑死颅拦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的教藻。 我是一名探鬼主播距帅,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼括堤!你這毒婦竟也來了碌秸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤悄窃,失蹤者是張志新(化名)和其女友劉穎讥电,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轧抗,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡恩敌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了横媚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纠炮。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖分唾,靈堂內(nèi)的尸體忽然破棺而出抗碰,到底是詐尸還是另有隱情,我是刑警寧澤绽乔,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布弧蝇,位于F島的核電站,受9級特大地震影響折砸,放射性物質(zhì)發(fā)生泄漏看疗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一睦授、第九天 我趴在偏房一處隱蔽的房頂上張望两芳。 院中可真熱鬧,春花似錦去枷、人聲如沸怖辆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竖螃。三九已至淑廊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間特咆,已是汗流浹背季惩。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留腻格,地道東北人画拾。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像菜职,于是被迫代替她去往敵國和親青抛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

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