AndroidWear優(yōu)化性能和電池壽命(官譯)

Android Wear因為自身的局限性,所以我們在寫開發(fā)Android Wear程序的時候一定要考慮到性能的流暢以及電池的消耗,目前為止,我自己也沒有做過很強大的Android Wear程序,表盤的開發(fā)也才進入初級程序,但是大概的開發(fā)過程已經(jīng)了解,所以今天先在這里把把官方文檔的優(yōu)化翻譯成中文提供給大家參考。

基礎(chǔ)優(yōu)化

這部分包含了當(dāng)表盤不工作時為了提高效率的最好的實踐方法.

使用表盤面服務(wù)的回調(diào)WatchFaceService.Engine

確保你的表盤只在運轉(zhuǎn)時執(zhí)行計算;使用回調(diào)函數(shù)WatchFaceService.Engine.最好用使用以下的方法去判斷是否這表盤可用。

onVisibilityChanged(boolean)

isVisible()

或者,使用同一類的下列方法(WatchFaceService.Engine)

onCreate()

onDestory()

在數(shù)據(jù)API接口使用偵聽器注冊

為了知道事件變化,使用在DataApi.addListener注冊了的真實收聽者.例如,看Syncing DataItems.

不要使用WearableListenerService去收聽事件,因為它一直活躍無論表盤是否運行.為了得到更多信息,請看Deprecation of BIND_LISTENER with Android Wear APIs.

不要再安卓系統(tǒng)顯示器上注冊廣播收音機來收聽事件,例如,時區(qū)變化、電池事件等.因為BroadcastReceiver被呼叫無論這個表盤是否運轉(zhuǎn),你可以使用registerReciver里面的方法去注冊廣播.

監(jiān)控能耗

Android Wear company app讓開發(fā)者和使用者理解電池在在穿戴裝備中的不同環(huán)節(jié)中的被消耗程度(根據(jù)設(shè)定>手表電池)

對于信息的功能在安卓5.0細節(jié)介紹了信息,幫助你提高電池壽命,請看Project Volat.

動畫的最佳實踐

這個環(huán)節(jié)最好的實踐就是幫助減少動畫的能量消耗.

減少動畫制作的幀頻

動畫制作通常計算昂貴還會消耗非常多的能量,大多數(shù)動畫制作還會每秒浪費30幀,所以你要避免高幀頻運行動畫.

讓CPU在動畫之間休息

表盤的動畫和小的變動都會喚醒CPU,你的表盤應(yīng)當(dāng)在動畫時讓CPU沉睡.例如,你可以使用動畫每秒短脈沖在相互影響模式時然后下一秒讓CPU沉睡.經(jīng)常讓CPU沉睡,即使很短暫,可以顯著的減少能量消耗.

為了最大化電池生命,保守地使用動畫,盡管小的閃動也能喚醒CPU,然后就會消耗電池的壽命.

減少你的位圖資資源尺寸

許多由背景形象和其他圖形資源組成的表盤被轉(zhuǎn)換和重疊在背景形象的頂端,例如鐘針和其他所設(shè)計的基礎(chǔ)元素隨時間推移.這些基礎(chǔ)元素經(jīng)常在Engine.onDraw()內(nèi)部旋轉(zhuǎn)(某時刻不動)每次系統(tǒng)重畫表盤,被描述在Draw Your Watch Face.

圖形資源越大,轉(zhuǎn)變他們的資源計算越昂貴.轉(zhuǎn)變大的圖形資源在Engine.onDraw()方法顯著的減少了系統(tǒng)運行你的動畫的幀頻數(shù).

為了增強表盤的執(zhí)行:

不要使用超過你需要的圖形資源

移除邊緣周圍的額外透明像素

圖1左側(cè)的示例時鐘指針的尺寸可以減小97%。


圖1

減少這個部分位圖資源的尺寸不止增強了你的動畫的執(zhí)行,也節(jié)約了電量.

聯(lián)系位圖資源

如果你的位圖經(jīng)常被畫在一起,考慮把他們放在一個圖形資源,你可以經(jīng)常聯(lián)系背景形象在相互影響的模式下,每次系統(tǒng)重畫表盤用刻度線避免畫出兩條滿屏位圖.

禁用反走樣繪制時標(biāo)位圖

當(dāng)你畫一個按比例縮小的Canvas文件時使用Canvas.drawBitmap()方法,你可以提供Paint

當(dāng)你畫一個縮放位圖使用Canvas畫布對象。drawbitmap()方法,你可以配置多個選項提供油漆的實例。為了提高性能,使用setAntialias()禁用反走樣方法,因為這個方法沒有任何效果上的位圖。

使用位圖過濾

為了位圖資源,你畫了其他頂端的基礎(chǔ)元素。為了讓位圖過濾在相同的Paint實例使用setFilterBitmap()方法.圖2展現(xiàn)了一個宏觀的視角有和沒有位圖過濾。


圖2

提示:在低度環(huán)境模式,這個系統(tǒng)沒有使這個形象的顏色位圖過濾運行成功.當(dāng)環(huán)境模式運行,對位圖過濾不利。

在畫圖方法以外的更多昂貴操作

這個系統(tǒng)叫做Engine.onDraw()方法每當(dāng)它重畫你的表盤,你只能按嚴(yán)格的要求操作去更新你的表盤這個方法來增強運行.

裝入映像和其他資源

調(diào)整圖像大小

分配對象

執(zhí)行計算的結(jié)果不會在幀數(shù)間變換

你可以經(jīng)常執(zhí)行這些操作也可以在Engine.onCreate()上,你可以提前調(diào)整圖像大小在Engine.onSurfaceChanged()這個為你提供了畫布的尺寸

為了分析你表盤的性能,使用安卓設(shè)備監(jiān)測,特別是,確保執(zhí)行時間在你的Engine.onDraw()安裝很短暫和一致的調(diào)用。更多的信息,請看Using DDMS.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容