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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值