對 Sony 使用者來說,Android 6.0 的 Doze 模式降低了電池效能

一直以來,對於客制化過的 ROM 和原生 Android 之間的比較,一直都有很大的爭論。就像我一樣,我也偏好原生的系統 (是指 Sony-stock,不是 CM xD)。

Google 一直試著整合使用者在不同裝置上所體驗到的優點,而且通常社群裡大家都會比較喜歡 Google 原生的功能勝過於已經放在 OEM 客製化過的系統裡的功能。

以多視窗(Multi-window)來說,Samsung 原本就已經在不少 Galaxy 裝置裡面放了這個功能。當然我個人並沒有擁有任何 Samsung 裝置,所以我也還沒體驗過多視窗的功能。不過之後 Android N 即將提供這個功能,Google 實作的多視窗功能會比 Samsung 做得好嗎?目前的比較顯示,Android N 的多視窗功能還需要一些改進才可以媲美 Samsung 的多視窗,但公平來說,在 Android N 正式發布前還有幾個月,所以我們目前並不能說 Android N 的多視窗功能一定不會比 Samsung 的好。

但如果 Google 的多視窗功能做的並沒有 Samsung 的好,卻又蓋掉 Samsung 原生的功能怎麼辦?對 Samsung 使用者來說,不就得到了一個閹割版的多視窗功能?其實這就是目前 SONY 的 STAMINA 模式所遇到的問題。

STAMINA Mode 沒電了

在 Android Marshmallow (Android 6.0) 推送到 Sony Xperia 裝置之前,就有一些用戶注意到 STAMINA 模式不見了。而 SONY 對此提供的說法是:

Marshmallow 版本的 Android 有它自己的電源管理模式(Doze 和 App Standby)。這些功能被直接整合在 Android 6.0 裡面,也就使得 STAMINA 模式變的冗餘;換句話說,STAMINA Mode 被從 Android M 移除了。

從這段文字並不難看出為什麼 SONY 會拿掉 Android Marshmallow 裡的 STAMINA 功能。Doze 模式使得 SONY STAMINA 模式的存在變得沒有必要,而且 SONY 並沒有其他選擇,因為 Doze 模式是通過 Google CTS 的一個必要項。要是不通過 Google CTS,裝置就不能預載 Google Apps (包括 Play Store)。

8.3. Power-Saving Modes

所有不受 Doze 模式和(或) App Standby 控制的 App 必須讓使用者看的見。此外,省電模式中全域系統設定裡觸發、維護、喚醒的演算法不得偏離 Android Open Source Project。

回到 SONY 的說法好了。SONY 說 Android 6.0 的 Doze 模式和 App Standby 使得 STAMINA 模式變的冗餘,這是一個奇怪的說法。相反的,SONY 從 Android Lollipop(應為 Jellybean) 就有的 STAMINA 模式早就能夠媲美 Android M 的 Doze 模式。事實上,Android M 的 Doze 模式跟 STAMINA 相比還使得電池續航力沒那麼好呢。

電池續航力戰爭

所以 Sony STAMINA 模式有多厲害?根據 SONY,這個功能限制住不必要的背景活動,以在平常節省一堆電量。他們用這張圖解釋了 STAMINA 模式如何省電:


↑ STAMINA 前


↑ STAMINA 後

看起來很眼熟嗎?

其實從圖上很難看出到底 STAMINA 模式比較強還是 Android Doze 模式比較強。所以接著來看看 Doze 模式和 STAMINA 模式是怎麼運作的吧。

STAMINA 模式

STAMINA 模式是這樣運作的:當你關掉螢幕的一分鐘後,系統會阻止所有網路資料傳輸,並避免背景活動喚醒系統。當你打開螢幕,所有活動會繼續運作。系統沒有停用網路傳輸,所以你打開螢幕的當下你就會收到所有剛剛被攔截的通知。特別的活動像是電話、簡訊、日曆通知和鬧鐘一樣會通知(因為他們呼叫了 Android 標準的 AlarmManager)。

但如果有一些重要的 App 你也想要即時收到他的通知怎麼辦?這種情況,你可以把它加入 STAMINA 模式的白名單裡,如此系統就不會去限制它。此外,要是你對 STAMINA 模式沒興趣,你也可以直接把它關掉。

Doze 模式

那 Doze 模式又是怎麼做的:

當螢幕關掉後,如果電量正在流失,而且手機是靜止的,那裝置就會進入 Doze 模式。當裝置進到 Doze 模式後,所有沒有被使用者加入電池最佳化白名單的 App 的網路存取、喚醒(wakelock)、標準 AlarmManager alarm、WiFi 掃描、同步 adapters 等都會被延遲,直到下一次系統喚醒手機(Maintenance Window)並允許這些動作跑一段時間。

聽起來跟 STAMINA 模式很像?以下是主要的不同:

  • Doze 模式只有在靜止的時候才會啟動(例如放在桌上,放口袋不算)
  • Doze 模式只有遇到高優先的 GCM 訊息(通知)才會被中斷。如果你喜歡的 App 的通知不是高優先的 GCM 怎麼辦?可惜,你得等下次的 Maintenence Window 了。
  • Doze 模式的白名單並不會真的排除該 App 的所有限制
  • Doze 模式不能停用。在 Android 6.0 上你的通知遇到問題嗎?可惜。

STAMINA 模式曾經有很棒的功能,甚至還被移植到各個裝置上(有個 Xposed 模組叫 Power Nap)。STAMINA 模式可以透過調整白名單而更積極或保守,然而 Doze 模式讓開發者只能碰運氣去嘗試什麼情況下它的 App 能夠正常運作。

STAMINA 模式回來了?

約一個禮拜前,有使用者回報說他們在 beta 版的 Marshmallow 更新看到了 STAMINA 模式。有部分網站把這些截圖拿起來並寫成文章。有些使用者發現 STAMINA 模式的效用減少很多。

以上是來自 Reddit 的部分截圖。但事實上,它幾乎只是從 Android Lollipop 就存在的省電模式,並不是跟 Doze 模式競爭的那個 STAMINA 模式。為了讓所有 OEM 廠商都有這個 Doze 模式,Google 事實上強迫了 SONY 去改變 STAMINA 的運作模式。就作者的觀點,他認為 Android N 的 Doze 模式會比 Sony 的 STAMINA 模式還要猛;然而 Android M 的 Doze 模式的確是還差 Sony 一步。

不幸的是,Xperia 用戶要等到 Android N 還有一大段路呢。等到 Android N 正式發布,至少還要等到第三季。

再看看 SONY 花了四個月才把 Marshmallow 放到 Xperia 旗艦機上 (Xperia Z5),我們是不是在 2017 才看的到 Android N?那只能升級到 Android M 的裝置怎麼辦?

原文為 For Sony, Android 6.0’s Doze Mode Marks a Battery Life Regression | Mishaal Rahman@xda,此文僅翻譯並加上個人觀點。