Android 锁屏后Service中的无法接收消息

胃在烧
  • 13

最近在开发一个实时通话的应用,android端用的websocket保持与服务器通信。现在的问题是,已经在手机上将测试应用锁住,保证能够常住后台。但是当屏幕锁屏一段时间后就无法接收到服务器的消息了。我在service中开了个定时器,每8秒向服务器发送消息,锁屏之后也是不发消息了,解锁之后又可以收发消息。后来查了一下说是多屏后CPU休眠了。
在网上找了很多方法,试过之后都不行,好多都是以前低版本安卓的解决办法,现在已经不好用了。我也考虑使用极光推送和小米推送之类的,但是看他们的说明也不能保证锁屏时候能接收到消息。请问这种东西是不是就无解了呢?有没有什么好的方法,能够锁屏也能接收到消息的?

回复
阅读 2.3k
4 个回答

以前做过类似应用,看安卓版本,版本越高基本无解。
首先是要解决后台静默运行的问题,安卓的内存机制会自动结束进程,如果你没root权限,基本上是不可能做到常驻后台,做成服务也不行。另外锁屏息屏都会结束掉一部分权重不高的应用服务,不过你如果是做前台应用,锁屏是没问题的

  1. 集成华为,小米,oppo,vivo,魅族的推送服务,websocket心跳断开后让服务端以厂商离线推送形式推消息。
  2. 引导用户开启锁屏通知。
  3. 可以和华为等厂商合作,使用其提供的始终运行接口。

tim保活案例

厂商白名单。

小鱼
  • 1
新手上路,请多包涵

播放一段无声音乐应该可以

宣传栏