bug--service--Caused by java.lang.SecurityException: Unable to start service Intent { }:user 0 is restricted


http://bbs.coloros.com/thread-174655-1-1.html

急!!Service在OPPO系列手機下無法啟動,尋求幫助

你好,我是網易郵件事業部1元奪寶開發工程師,最近三個版本發現一個崩潰很怪異,因為97%的奔潰都發生在OPPO機型,而且OPPO機型里85%是R7系列,以下是錯誤日志,麻煩童鞋們幫忙看看,謝謝! Fatal Exception: java.lang.RuntimeException: An error occured while executing doInBackground() at com.netease.mail.oneduobaohydrid.base.BaseAsyncTask$3.done(BaseAsyncTask.java:95) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1115) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:590) at java.lang.Thread.run(Thread.java:818) Caused by java.lang.SecurityException: Unable to start service Intent { cmp=com.netease.mail.oneduobaohydrid/.service.OneService }: Unable to launch app com.netease.mail.oneduobaohydrid/10057 for service Intent { cmp=com.netease.mail.oneduobaohydrid/.service.OneService }: user 0 is restricted at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1769) at android.app.ContextImpl.startService(ContextImpl.java:1742) at android.content.ContextWrapper.startService(ContextWrapper.java:527) at com.netease.mail.oneduobaohydrid.service.OneService.start(OneService.java:102) at com.netease.mail.oneduobaohydrid.OneApplication.init(OneApplication.java:207) at com.netease.mail.oneduobaohydrid.base.BaseApplication$1.doInBackground(BaseApplication.java:84) at com.netease.mail.oneduobaohydrid.base.BaseApplication$1.doInBackground(BaseApplication.java:75) at com.netease.mail.oneduobaohydrid.base.BaseAsyncTask$2.call(BaseAsyncTask.java:83) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1115) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:590) at java.lang.Thread.run(Thread.java:818)

 

你好,我們工程師看了一下,提出了一些問題:

OPPO手機內置有耗電管理的功能,可能該應用服務在后台啟動時被判斷為耗電的一種操作行為;
但是根據你的上面提交的資料,這個問題沒有詳細完整的Log或復現路徑,不知道該應用是被OPPO手機內的耗電管理判斷是哪種類型耗電,所以暫時無法提供方法。 
理論上如果該應用服務是合理地使用就不會被判斷耗電。 
所以希望有完整的log以及復現路徑提供給我們。

另一種方法是,你們可以嘗試自己在啟動服務時捕獲異常,不上報,因為OPPO手機內對耗電管理的限制對他們的正常使用沒有影響。

請問跟 APP 使用了 multi-dex 有關系么?
你們的 rom,啟用了 ART 虛擬機么?

 

解決方法:

@ALL ,不好意思讓大家久等了。
經過和OPPO工程師溝通,這個問題的原因是OPPO手機自動熄屏一段時間后,會啟用系統自帶的電量優化管理,禁止一切自啟動的APP(用戶設置的自啟動白名單除外)

所以,類似的崩潰常常集中在用戶休息之后的夜里或者凌晨,但是並不影響用戶平時的正常使用。

至於會出現user 0 is restricted,我覺得是coloros系統電量優化管理做得不好的地方。

對coloros官方的處理建議:既然禁止自啟動,那么干脆直接force stop對應的進程,而不是拋出RuntimeException來讓開發者買單。

對開發者處理建議:在服務啟動的地方進行try catch防止崩潰即可(也是“1元奪寶”APP目前的處理方式)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM