華爲mate30上,用於長連接的service服務無法啓動問題修復

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章