注册

android上的离线推送,是否假离线,是否能实现实时离线推送

测试手顺和现象:1、使用环信Demo,首先登陆环信,在环信开启和应用程序隐藏后台(pause)的情况下,消息都能实时的推送过来,但是当程序关闭后,推送消息没有响应。
2、在程序关闭后,查看设置里正在运行的应用,可以看到环信Demo的EMChatService进程依然存活,但是一点响应也没有。
3、按开关键关/开屏幕,又开始能够实时接收推送消息。
 
问题:
1、正常来说环信依靠EMChatService在后台持续运行,保持对推送消息的接收,为什么能看到这个Service在存活,但是消息无法接收?

猜测:
1、应用程序被关闭后,EMChatService在后台继续运行,并进入某种假死状态。
2、com.easemob.chat.StartServiceReceiver接收系统事件重新启动了EMChatService,EMChatService回复工作。
3、这就产生了应用程序关闭到第一次重启屏幕之间的推送空白期。
问题:
2、由于这一切都是封装在jar包里,无法知道StartServiceReceiver重新启动EMChatService的过程,现在我打算这样做:在我的应用程序里建两个Service,这两个Service互相监听保证不被杀死,而这两个Service同时监听EMChatService,也保证EMChatService不被杀死,问:1、环信SDK内部有没有这种守护进程机制,有的话我如何用?2、如果没有守护进程,我自己写的话,重新启动EMChatService(第一次启动之后,EMChatService这个进程已经存在了)这个过程应该怎么定义,能不能给个示例?
 
已邀请:
环信是有做守护进程的,有个so库,你可以看看,可以提高低内存被android系统杀死能够重启的概率

要回复问题请先登录注册