
對手機而言,細微的卡頓是一種很主觀的感覺。為了將手機卡頓與否以一種客觀的形式“量化”,網上傳出了一種關于“玄學曲線”的傳說。那么,這種曲線究竟能否反映出手機的卡頓與否呢?
隱藏的開發者模式
每一款Android手機的設置選項中都隱藏了一個功能,它就是“開發者選項”(又稱開發者模式)。這個功能的本意,是幫助軟件開發者進行功能的調試和優化。但是,該選項里面的很多功能,都能給我們帶來驚喜。
比如,很多品牌手機的USB調試模式就被隱藏在了開發者選項里,當需要借助PC ROOT手機,或是PC上的某些客戶端軟件與手機連接時都需要打開USB調試模式才能實現全部功能。此外,如果你想免費快速提升手機操作的流暢度,將“窗口動畫縮放”、“過渡動畫縮放”和“動畫程序時長縮放”從默認的1x修改為0.5x即可(圖1),簡單又快捷。
而引言中提到的“玄學曲線”,就是開發者選項中隱藏的功能之一,也是用來幫助Android開發者找到界面中渲染問題的小工具。
怎么激活玄學曲線
需要注意的是,不同品牌的手機對開啟“玄學曲線”的選項名稱可能略有區別。“玄學曲線”的英文原名是“Profile GPU Rendering”,而國內手機品牌會將其翻譯為“GPU顯示配置文件”或“GPU呈現模式分析”。
以ZUK手機為例,想激活“玄學曲線”,就需要找到并點擊開發者選項中的“GPU呈現模式分析”,并將其設定在“在屏幕上顯示為條形圖”(圖3)。然后,你就會發現手機屏幕上出現了無數道彩色的線條,由這些線條組成的波形圖,就是本文的主題“玄學曲線”了(圖4)。
當應用程序在運行時,我們會看到屏幕下方出現了一排由紅、橙、藍三色組成的柱狀圖(由無數道線條組成),從左到右動態地顯示。每一道垂直的線條代表一幀的渲染,隨著需要渲染的幀數越來越多,我們也就可以觀察到這段時間幀率的變化了。
玄學曲線中的標記線
Android系統默認將每秒60幀設定為滿幀,按照1秒÷60幀的公式可以得到16ms(毫秒)時為滿幀的界限。在玄學曲線中,有一道橫向顯示且貫穿整個屏幕的綠色線條,它就代表著16ms的標記線(圖5)。理論上講,只要有一道豎線超過了綠色的標記線,就代表著你看到的動畫有丟幀現象產生。
不過,理論和實際總是存在差異的(圖6),所以盲目迷信“只要三色玄學曲線越過標記線就卡”顯然是有失偏頗的。
玄學曲線中的彩色線
在“玄學曲線”中,紅色的線條代表執行時間,也就是CPU將所需要繪制的任務交給GPU,再由GPU渲染到屏幕上所用的時間。因此,如果紅線超過了綠色標記線并不一定代表卡頓,因為當我們上網時,網頁上的圖片會根據網速的快慢,刷新(顯示)出來的速度也是有快有慢,很多圖片都需要等待幾秒才能完全顯示,你能說手機卡頓了幾秒嗎?
橙色線部分代表處理時間,也就是CPU告訴GPU渲染已經完成的時間。但有時候當GPU的任務太多時,往往不能第一時間反饋給CPU已經獲悉渲染完成的信息。所以,橙色線越過綠色標記線,只能代表GPU當前占用率太高,也不見得出現了卡頓。
藍色線代表繪制時間,就是GPU完成CPU交給的渲染任務的時間。在玄學曲線中,只有藍色線超過綠色標記線,才算真正抓到了丟幀卡頓的證據。
看到這里,相信你對玄學曲線已經有了基本的認識,它們存在的初衷是幫助開發者調試,通過對三色線的變化進行有針對性的優化。一套系統、一款應用,只有在運行的絕大多數時間都能保持三色線不越過標記線才算完美。
開發者選項的功能有待挖掘
除了本文涉及的提升流暢度、判斷流暢度的玄學曲線,Android系統的開發者模式還隱藏了無數有趣的功能。比如,很多視力存在缺陷的色盲、色弱用戶,可以通過“模擬顏色空間”,讓屏幕的色彩按照自己的實際情況改變色彩的構成(圖7),以便更好地看清屏幕上的內容。