华为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

 

 

你可能感兴趣的:(程序异常,Andriod)