Android的性能優(yōu)化,主要是從啟動速度嫌拣、內(nèi)存柔袁、流暢性、電量和流量等5個方面入手异逐。
啟動速度優(yōu)化
- 不在主線程做耗時操作捶索,如io讀寫、數(shù)據(jù)庫操作等灰瞻,使用子線程或延時處理
- 不在application中初始化過多的三方SDK
- 降低布局文件的嵌套層級腥例,使用merge、include酝润、viewstub標(biāo)簽
- 減少inflate和findViewById調(diào)用次數(shù)
內(nèi)存優(yōu)化
- 列表項(xiàng)使用ConvertView和ViewHolder緩存視圖
- 不在自定義view的onDraw方法中new對象
- 不在循環(huán)體中new對象
- Bitmap燎竖、io流等及時釋放
- 對象重用機(jī)制,如Bitmap緩存池
- Bitmap使用縮略圖要销,降低編碼格式
- 字符串拼接使用StringBuilder
- 使用android:largeHeap="true"獲得更大的使用內(nèi)存
- 使用android:sharedUid构回,共享app間的可用內(nèi)存
- 排查內(nèi)存泄漏問題
流暢性優(yōu)化
- 防止過渡繪制問題
- 列表滑動過程中不加載圖片
- 減少view的刷新次數(shù)
- 實(shí)時性高的界面使用SurfaceView
- 減少onMeasure方法的復(fù)雜度,onDraw方法盡量在16ms內(nèi)完成
- 優(yōu)先使用本地數(shù)據(jù)加載疏咐,再異步請求網(wǎng)絡(luò)
- 使用HandlerThread纤掸,減輕主消息隊列的負(fù)擔(dān)
- 使用GPU呈現(xiàn)檢查繪制時間
- 使用TraceView分析方法的執(zhí)行時間
電量優(yōu)化
- 正確使用WakeLock,及時release
- 使用view的keepScreenOn屬性
- 根據(jù)使用場景浑塞,調(diào)低屏幕亮度借跪,提供夜間模式
- 進(jìn)程轉(zhuǎn)入后臺時,暫停網(wǎng)絡(luò)請求酌壕,降低連接的心跳頻率
- 控制AlarmManager的喚醒時間頻率
- 使用JobScheduler執(zhí)行非緊急任務(wù)
流量優(yōu)化
- 請求網(wǎng)絡(luò)數(shù)據(jù)后保存到本地掏愁,優(yōu)先使用本地數(shù)據(jù)
- 服務(wù)器下發(fā)矢量圖、縮略圖等仅孩,視頻提供清晰度選擇
- 進(jìn)程轉(zhuǎn)入后臺時托猩,暫停網(wǎng)絡(luò)請求,退出應(yīng)用時停止請求
- 對于大量數(shù)據(jù)請求分步進(jìn)行
- 使用三方優(yōu)秀開源庫如okhttp,glide等
- 使用流量工具檢測大流量的場景并進(jìn)行優(yōu)化