Android 性能優(yōu)化Tips

1. Disk I/O

SharedPreferences 擴(kuò)展性不好,可以考慮使用扁平化文件+LRU 內(nèi)存緩存,如果有大量keys可以考慮使用SnappyDB。

2. Networking

  • 并行和優(yōu)先級(jí)http連接 Volley
  • byte buffer 復(fù)用,OkHttp

3. 解析

  • 避免使用反射進(jìn)行解析
  • 解析大量流數(shù)據(jù)時(shí)使用SAX
  • 使用代碼生成器解析器

4. Latency cpu 時(shí)間

  • 在應(yīng)用啟動(dòng)時(shí)指獲取必要的信息,從而優(yōu)化啟動(dòng)時(shí)間
  • 限制在一個(gè)固定大小的線程池中執(zhí)行異步任務(wù)
  • 在Acidity中盡早進(jìn)行網(wǎng)絡(luò)請(qǐng)求
  • 監(jiān)測(cè)網(wǎng)絡(luò)連接狀態(tài),從而調(diào)整獲取數(shù)據(jù)策略
  • 盡可能地從網(wǎng)絡(luò)獲取關(guān)鍵數(shù)據(jù)
  • 在scroll layout中注意View的回收和循環(huán),注意合理地實(shí)現(xiàn)View的回收
  • 避免重復(fù)調(diào)用系統(tǒng)服務(wù),啟動(dòng)一次然后在內(nèi)存中緩存使用
  • 避免頻繁調(diào)用自定義view的invalidate 和ondraw,盡量一次調(diào)用批量udpate多個(gè)view
  • 盡量使用lint和fltten view hierarchies 來(lái)優(yōu)化view
  • 避免訪問(wèn)類(lèi)的內(nèi)部成員變量

5. 圖片和scrolling

  • 使用高效的圖片庫(kù)避免頻繁GC和內(nèi)存抖動(dòng)
  • 使用固定大小的100_100,200_200等來(lái)提高CND的cache
  • 避免在客戶(hù)端自己調(diào)整圖片大小,而是直接使用合理大小的圖片
  • 不用吧圖片放置在分辨率敏感的文件夾下,這樣的圖片在運(yùn)行時(shí)會(huì)被放大,有時(shí)會(huì)導(dǎo)致OOM

6. GC和內(nèi)存

  • 緩存頻繁使用的Object避免GC
  • 不用強(qiáng)引用activity context,使用application 的context或者弱引用,這樣可以避免在activity finish之后的內(nèi)存泄漏

7. 渲染

  • 優(yōu)化ui線程中頻繁執(zhí)行的操作
  • 使用FPS檢測(cè)渲染卡頓問(wèn)題,并優(yōu)化耗時(shí)操作
最后編輯于
?著作權(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)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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