Android Systrace 基礎知識(3) - Why 60 fps ?

本文是 Systrace 系列文章的第三篇,解釋一下爲何大家總是強調 60 fps。60 fps 是一個軟件的概念,與屏幕刷新率裏面提到的 60hz 是不一樣的,可以參考這篇文章:新的流暢體驗,90Hz 漫談

本系列的目的是通過 Systrace 這個工具,從另外一個角度來看待 Android 的運行,從另外一個角度來對 Framework 進行學習。也許你看了很多講 Framework 的文章,但是總是記不住代碼,或者不清楚其運行的流程,也許從 Systrace 這個圖形化的角度,你可以理解的更深入一些。

系列文章目錄

  1. Systrace 簡介
  2. Systrace 基礎知識 - Systrace 預備知識
  3. Systrace 基礎知識 - Why 60 fps ?
  4. Systrace 基礎知識 - SystemServer 解讀
  5. Systrace 基礎知識 - SurfaceFlinger 解讀
  6. Systrace 基礎知識 - Input 解讀
  7. Systrace 基礎知識 - Vsync 解讀
  8. Systrace 基礎知識 - Vsync-App :基於 Choreographer 的渲染機制詳解
  9. Systrace 基礎知識 - MainThread 和 RenderThread 解讀
  10. Systrace 基礎知識 - Binder 和鎖競爭解讀
  11. Systrace 基礎知識 - Triple Buffer 解讀
  12. Systrace 基礎知識 - CPU Info 解讀

正文

今天來講一下爲何我們講到流暢度,要首先說 60 幀。

我們先來理一下基本的概念:

  1. 60 fps 的意思是說,畫面每秒更新60次
  2. 這60次更新,是要均勻更新的,不是說一會快,一會慢,那樣視覺上也會覺得不流暢
  3. 每秒60次,也就是 1/60 ~= 16.67 ms 要更新一次

在理解了上面的基本概念之後,我們再回到 Android 這邊,爲何 Android 現在的渲染機制,是使用 60 fps 作爲標準呢?這主要和屏幕的刷新率有關。

基本概念

  1. 我們前面說的 60 fps,是針對軟件的
  2. 這裏說的屏幕的刷新率,是針對硬件的,現在大部分手機屏幕的刷新率,都維持在60 HZ,移動設備上一般使用60HZ,是因爲移動設備對於功耗的要求更高,提高手機屏幕的刷新率,對於手機來說,邏輯功耗會隨着頻率的增加而線性增大,同時更高的刷新率,意味着更短的TFT數據寫入時間,對屏幕設計來說難度更大。
  3. 屏幕刷新率 60 HZ 只能說夠用,在目前的情況下是最優解,但是未來肯定是高刷新率屏幕的天下,個人覺得主要依賴下面幾點的突破:
    4. 電池技術
    5. 軟件技術
    6. 硬件能力

綜上,目前的情況下, Android 的渲染機制是 16.67 ms 繪製一次, 60hz 的屏幕也是 16.67 ms 刷新一次,所以大家見到的 Android 手機,基本都是這個配置,目前階段下的最優解。

效果提升

如果要提升,那麼軟件和硬件需要一起提升,光提升其中一個,是基本沒有效果的,比如你屏幕刷新率是 75 hz,軟件是 60 fps,每秒軟件渲染60次,你刷新 75 次,是沒有啥效果的,除了重複幀率費電;同樣,如果你屏幕刷新率是 30 hz,軟件是 60 fps,那麼軟件每秒繪製的60次有一半是沒有顯示就被拋棄了的。

如果你想體驗120hz 刷新率的屏幕,建議你試試 ipad pro ,用過之後你會覺得,60 hz 的屏幕確實有改善的空間。

這一篇主要是簡單介紹,如果你想更深入的去了解,可以去 Google 一下,另外 Google 出過一個短視頻,介紹了 Why 60 fps, 有條件翻牆的同學可以去看看 :

  1. Why 60 fps
  2. 玩遊戲爲何要60幀才流暢,電影卻只需24幀

下面這張圖是 Android 應用在一幀內所需要完成的任務,後續我們還會詳細講這個:

關於我 && 博客

  1. 關於我 , 非常希望和大家一起交流 , 共同進步 .
  2. 博客內容導航
  3. 優秀博客文章記錄 - Android 性能優化必知必會

一個人可以走的更快 , 一羣人可以走的更遠

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章