編寫:heray1990 - 原文: http://developer.android.com/training/wearables/watch-faces/performance.html
除了有好的 notification cards 和系統(tǒng)指示圖標之外,我們還需要確保表盤的動畫運行流暢,服務(wù)不會執(zhí)行沒必要的計算。Android Wear 的表盤會在設(shè)備上一直運行,所以表盤高效地使用電池顯得十分重要。
這節(jié)課提供了一些提示來加快動畫的速度,測量和節(jié)省設(shè)備上的電量。
很多表盤由一張背景圖片及其它被轉(zhuǎn)換和覆蓋在背景圖片上面的圖形資源組成,例如時鐘指針和其它隨著時間移動的設(shè)計組件。沒詞系統(tǒng)重新繪制表盤的時候,在 Engine.onDraw() 方法里面,這些圖像組件往往會旋轉(zhuǎn)(有時會縮放),詳見繪制表盤。
這些圖形資源越大,轉(zhuǎn)換它們所需的運算量就越大。在 Engine.onDraw() 方法中轉(zhuǎn)換大的圖形資源會大大地減低系統(tǒng)運行動畫的幀率。
為了提升表盤的性能,我們需要:
在 Figure 1 中的時鐘指針例子可以將大小減小97%。
http://wiki.jikexueyuan.com/project/android-training-geek/images/ClockHandFull.png" alt="" />http://wiki.jikexueyuan.com/project/android-training-geek/images/ClockHandCropped.png" alt="" />
Figure 1. 可以剪裁多余像素的時鐘指針
這節(jié)內(nèi)容介紹的減小位圖資源的大小不僅提升了動畫的性能,也節(jié)省了電量。
如果我們有經(jīng)常需要一起繪制的位圖,那么可以考慮將它們合并到同一個圖形資源中。在交互模式下,通常我們可以將背景圖片和計數(shù)標記組合起來,從而避免沒詞系統(tǒng)重新繪制表盤時,都去繪制兩個全屏的位圖。
當使用 Canvas.drawBitmap() 方法繪制可縮放的位圖,我們可以使用 Paint 實例去設(shè)置一些選項。為了提升性能,使用 setAntiAlias() 方法禁用反鋸齒,這是由于這個設(shè)置對于位圖沒有任何影響。
對于繪制在其它組件上的位圖資源,可以在同一個 Paint 實例上使用 setFilterBitmap() 方法來打開位圖濾鏡。Figure 2顯示了使用和沒使用位圖濾鏡的放大的時鐘指針。
http://wiki.jikexueyuan.com/project/android-training-geek/images/BitmapFilterDisabled.png" alt="" /> http://wiki.jikexueyuan.com/project/android-training-geek/images/BitmapFilterEnabled.png" alt="" />
Figure 2. 沒使用位圖濾鏡(左)和使用位圖濾鏡(右)
Note: 在低比特率的環(huán)境模式下,系統(tǒng)不能可靠地渲染圖片的顏色,從而不能保證成功地執(zhí)行位圖濾鏡。因此,在環(huán)境模式下,禁用位圖濾鏡。
每次重新繪制表盤時,系統(tǒng)會調(diào)用 Engine.onDraw() 方法,所以為了提升性能,我們應(yīng)該只將用于更新表盤的重要的操作放到這個方法中。
可以的話,避免在 onDraw() 方法里處理下面這些操作:
通常可以在 Engine.onCreate() 方法中運行上述這些操作。我們可以在 執(zhí)行Engine.onSurfaceChanged() 方法之前調(diào)整圖片大小。其中,該方法提供了畫布的大小。
為了分析表盤的性能,我們可以使用 Android Device Monitor。特別地,確保 Engine.onDraw() 實現(xiàn)的運行時間是短的和調(diào)用是一致的。詳細內(nèi)容見使用 DDMS。
除了前面部分介紹的技術(shù)之外,我們還需要按照下面的最佳做法來降低表盤的電量消耗。
動畫通常需要消耗大量計算資源和電量。大部分動畫在每秒30幀的情況下看上去是流暢的,所以我們應(yīng)該避免動畫的幀頻比每秒30幀高。
表盤的動畫和內(nèi)容的小變化會喚醒 CPU。表盤應(yīng)該在動畫之間讓 CPU 睡眠。例如,在交互模式下,我們可以每隔一秒使用動畫的短脈沖,然后在下一秒讓 CPU 睡眠。頻繁地讓 CPU 睡眠,甚至短暫地,都可以有效地降低電量消耗。
為了最大化電池使用時間,謹慎地使用動畫。即使閃爍動畫在閃爍的時候也會喚醒 CPU 并且消耗電量。
在 Android Wear companion app 的 Settings > Watch battery 下,開發(fā)者和用戶可以看到可穿戴設(shè)備中不同進程還有多少電量。
在 Android 5.0 中,更多關(guān)于提升電池使用時間的信息,請見 Project Volta。