小酌雞湯
常日好讀書,晚年學(xué)垂綸袖牙。
本文來源《Android 性能優(yōu)化 全家桶》
什么是60fps?
?60fps:畫面每秒刷新60次侧巨,一幀的時(shí)間就是1/60 ~=16.67ms
刷新率 vs 幀率?
刷新率:每秒屏幕刷新次數(shù),現(xiàn)在大部分手機(jī)屏幕的刷新率是60HZ
幀率:GPU在一秒內(nèi)繪制的幀數(shù)鞭达。
為什么是60fps?
?現(xiàn)階段司忱,Android的幀率是60fps(16.67ms繪制一次),而手機(jī)的屏幕刷新率是60HZ(16.67ms刷新一次)畴蹭,所以目前的Android手機(jī)基本是這個(gè)配置坦仍,目前階段的最優(yōu)解。
為什么會(huì)卡頓丟幀?
?Android系統(tǒng)每16ms發(fā)出VSYNC信號(hào)叨襟,觸發(fā)GPU對(duì)UI渲染繁扎,如果你的耗時(shí)是20ms,系統(tǒng)在得到VSYNC信號(hào)的時(shí)候由于還沒準(zhǔn)備好糊闽,就無法進(jìn)行更新任何內(nèi)容梳玫,那么用戶在32ms內(nèi)看到的是同一幀畫面,就丟幀了右犹,會(huì)有卡頓現(xiàn)象提澎。
Systrace的 文件分析 實(shí)操開始吧~
(1)systrace實(shí)操環(huán)境(可選項(xiàng),用自己的環(huán)境和代碼也一樣)
- SamplePop代碼下載
- SamplePop環(huán)境如下:
?Android Studio 4.0
?Gradle version 6.1.1
?Android API version 30
(2)SamplePop示例代碼:
public void onFramesLossMonitor(View view) {
Log.d(TAG, "onFramesLossMonitor: ");
startAnimator();
}
private void startAnimator() {
Log.d(TAG, "startAnimator: ");
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1f);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mMonitorBgView.setAlpha((float) animation.getAnimatedValue());
monitorDoSomeThings();
}
});
valueAnimator.setDuration(500);
valueAnimator.start();
}
private void monitorDoSomeThings() {
Log.d(TAG, "monitorDoSomeThings: ");
try {
Thread.sleep(50);
} catch (InterruptedException e) {
Log.d(TAG, "writeSomething: ");
}
}
?按照上篇講述的方法念链,導(dǎo)出html文件報(bào)表盼忌,找到對(duì)應(yīng)包名的進(jìn)程,查看Frames
,表明有卡頓(丟幀)掂墓。
?綠色:< 1* vsync
?黃色:1 * vsync ~ 2 * vsync之間
?紅色:> 2 * vsync
(3)打開運(yùn)行的systrace結(jié)果報(bào)表:
鍵盤快捷鍵:
W :放大跟蹤時(shí)間軸
A :在跟蹤時(shí)間軸上向左平移
S :縮小跟蹤時(shí)間軸
D :在跟蹤時(shí)間軸上向右平移
E :以當(dāng)前鼠標(biāo)位置為中定位跟蹤時(shí)間軸
M :高亮當(dāng)前選區(qū)
界面管道顏色說明:
灰色:正在休眠谦纱。
藍(lán)色:可運(yùn)行(它可以運(yùn)行,但是調(diào)度程序尚未選擇讓它運(yùn)行)梆暮。
綠色:正在運(yùn)行(調(diào)度程序認(rèn)為它正在運(yùn)行)服协。
紅色:不可中斷休眠(通常在內(nèi)核中處于休眠鎖定狀態(tài))±泊猓可以指示 I/O 負(fù)載偿荷,在調(diào)試性能問題時(shí)非常有用。
橙色:由于 I/O 負(fù)載而不可中斷休眠唠椭。
(4)查看單幀信息:
?點(diǎn)擊單幀詳情跳纳,會(huì)提示卡頓的詳細(xì)信息以及建議。
小編的擴(kuò)展鏈接
參考鏈接
- 谷歌官網(wǎng) -> 瀏覽 Systrace 報(bào)告
- 谷歌官網(wǎng) -> 渲染速度緩慢案例
- 谷歌官網(wǎng) -> 了解 Systrace原理
- 優(yōu)秀博文 -> 看這一篇就夠了
荷花宮樣美人妝贪嫂,荷葉臨風(fēng)翠作裳
?
舉手之勞寺庄,贊有余香!???比心??
?