最近有多宗用戶回報,指小鴨在華為Mate 10 /Pro上,不時會停止運作,即使做足保護App免被終止的設定(如在電量關閉自動管理及設定權限),以至在多工畫面鎖App,以及開啓App內顯示服務通知(即表示程式屬前景服務,非必要不應殺掉),仍未能阻止華為自訂的系統在一段時間或鎖機後,停止小鴨的正常運作。
作者並無華為手機驗證,但根據回報所描述,再查閱網上討論(包括背景App,或運作相近的Widget及即時通知),似乎相當多華為Mate 10 /Pro 用戶(以至升級到EMUI
8的其他華為手機用戶)遇到相似問題,即這類App正常運作一段時間後會停止運作,更改省電設定很多時並沒有解決問題,更混亂的是,省電設定的效用似乎因用戶及App而異,如部份用戶發覺,某些App在開啟電量自動管理後反而更能持續運作。
EMUI凍結背景App的機制(註1),顯然不是原生Android本身的設計,應與Android 8加強背景運作控制無關(況且Android 8的新限制只適用於target Android 8或以上的App而小鴨目前仍不是)。雖然華為在EMUI
8之前亦有採用類似機制,但或許由於在EMUI 8上更「進取」,引致背景運作受嚴重影響,即使是華為Mate的舊用戶,在Mate 10也未能成功設定防止背景App被凍結。
有討論指,這可能是因為華為Mate 10採用所謂AI省電,透過學習用戶習慣自行決定可停止/凍結什麼App。用戶若較常開啟某App便會減少該App被停止的問題。但這樣的所謂AI學習,似乎是建基於完全錯誤的假設,就是用戶不開啟、沒有interaction的App,在背景運作便是浪費電量,而疑似AI省電看來能凌駕用戶的省電及鎖定設定,這若不是bug,便是假設了AI比程式開發者及用戶更清楚運作要求。
而諷刺地,若上述理解為真,用戶要用攔截電話軟件,或須將省電設為自動後,不時開啟攔截程式做些動作,以「訓練」AI不要停止其背景運作,才可較可靠地長時間運作。而且即使成功,若日後疏於「訓練」,亦可能故態復萌。這種耗電耗時費心但仍沒有保證的做法,恰恰將省電及攔截軟件兩者的好處完全廢掉。
另一種做法,是root機後再用方法停止華為的休眠機制(註1文章有介紹mate 9做法),不過,除了root機的風險,由於觸及隨時會改變的底層細節,變磚風險自負。
所以,如果購入AI能凌駕用戶設定,停止App運作的手機,便要有幫襯電訊商攔截服務,才能有效攔截推銷來電的覺悟。
(20/1/2018)現已將Mate 10及Mate 10 Pro在Google Play上列為不兼容,以免用戶誤會可正常運作。若要測試可直接下載APK。
(30/4/2018)由於Mate 9更新為EMUI 8後有類似情況,xda所見P20亦一樣,因此已將Mate 9及P20系列列為不兼容。
(24/6/2018)隨著華為用戶升級到EMUI 8,已將大部份新款華為機型列為不兼容,日後亦會繼續更新。
註1:
在XDA早幾天一篇貼文,研究了Mate 9 停止App運作的底層機制,發覺華為在Android本身的記憶及進程管理之外,直接使用了Linux的休眠機制,去凍結App的進程,(在Mate 9上透過華為「Phone Manager」進行),與Android原生的機制不同,App在Mate 9被凍結後,不會停止再重啟,而是待收到內部訊息時解凍。有人隨後發現Mate 10也有類似休眠機制。該文指,此機制無法透過華為設定關掉。作者隨後指,或可用如AutoMagic的App,每十秒喚醒程式一次以防止被休眠。(如不介意核電變倒水電⋯⋯)雖然此機制下,「解凍」時App不用重新初始化,但或會導致已過時的事件一次過觸發,引起其他問題(如攔截App彈出過時的來電提示,紀錄錯誤時間等)。
在〈AI凌駕用戶?有關小鴨在華為Mate上的運作〉中有 2 則留言
有方法規避以上華為mate 10的問題嗎?真的不想透過換機解決-.-暫時所知香港行貨無以上問題!國行就有,請求跟進解決,小鴨,我是由你開apps開始支持你,都無轉用小熊事件賣盤及改版後起的apps。
另想問新版本apk下方一欄機構資料庫何時開通更新到?
已於#87回覆 http://www.hkepc.com/forum/viewthread.php?fid=180&tid=2389258&extra=page%3D1&page=9