1.問題背景:
華爲mate30上無法啓動service,沒有任何報錯信息
Intent intent = new Intent(application.getApplicationContext(),KWAppIMService.class); application.getApplicationContext().startService(intent);
2.問題原因(官方回覆):
尊敬的開發者,您好,
從安卓O版本推出出了Background Execution Limits,減少後臺應用內存使用及耗電,一個很明顯的應用就是不準後臺應用通過startService啓動服務。請參考下面的文檔:https://www.jianshu.com/p/f2db0f58d47f
請確認您的應用調用startService時處於前臺,如果還是有問題,請通過前面反饋給您的方法抓取日誌給我們進行分析。
合作愉快。
華爲開發者聯盟開發者技術支持團隊
2.問題分析:
a . 根據簡書文章,觀點主要是後臺應用不能通過startService,但是問題上我是在Application onCreate的時候去啓動的啊
而且大部分機器也是正常的,爲什麼華爲mate30上不行呢?
b.更爲奇怪的是三個App項目,其中有1個可以,另外兩個不可以,這又怎麼解釋呢?
3.實驗觀點:
a.在Application的onCreate中startService,有被判斷是後臺應用啓動service的風險,安卓8時不允許的
b.三個App中其中1個App之所以能正常啓動,是因爲異步啓動,延緩了時間,前臺應用可以正常statrService
4.解決策略:
a .把啓動service的位置變更到Splash頁面
b.延緩啓動Service