后台服务和作业调度程序XMPP聊天应用程序



我正在尝试使用XMPP+PHP自制API+本地Android数据库构建聊天应用程序。我想使用在后台运行的XMPP(作为服务或后台作业(来告诉我的应用程序,如果收到新消息,就从API获取数据。然后将其存储在本地数据库中,并使用更新后的内容更新我的消息框。

XMPP客户端在前台运行良好(Lolipop和OREO(但当我关闭应用程序(滑到一边,而不是硬杀(时,它仍然可以工作大约5分钟,然后闲置,2分钟后再次备份5分钟,以此类推。(在Lolipop上(。它立即停在OREO上。

我知道OREO需要Job Scheduler来管理我的后台任务。但为什么我的服务在Lolipop上5分钟后就停止了?

我试图覆盖我的服务的onDestroy方法:
https://stackoverflow.com/a/43936309/10651475
但它不会改变任何事情。

我应该如何在OREO上实现我的背景工作?该作业运行一次,可以定期重新启动,但我希望保持它的运行,以便立即收到新消息,即使我已经两个小时没有使用手机了。

WhatsApp、Facebook Messanger、Snapchat和Instagram在这两个版本上都做得很完美(Lolipop&OREO(。但是他们是怎么做到的???

我忘了提一下,所有这些应用程序都没有显示挂起的通知。

我读了很多关于这个话题的讨论。他们使用推送通知、GoogleCloudMessaging等。但我觉得我被迫使用GCM、Firebase和所有这些生态系统。

我应该明白谷歌年复一年地锁定安卓系统吗?

https://medium.com/exploring-android/exploring-background-execution-limits-on-android-oreo-ab384762a66c

https://android.stackexchange.com/questions/140669/how-does-whatsapp-stay-in-background-without-being-closed

https://android.jlelse.eu/keep-those-background-services-working-when-targeting-android-oreo-sdk-26-cbf6cc2bdb7f

whatsapp如何在应用程序关闭时保持其eJabberd/XMPP服务器的连接?

我读了这些文章,还有更多,但我没有在那里找到答案。。。

如果你有一个主意,它会对我帮助很大。

谢谢:(

对于您的棒棒糖问题,请尝试

@Override
public void onTaskRemoved(Intent rootIntent) {
    Intent intent = new Intent(this, XmppService.class);
    startService(intent);
}

在您的服务级别。

最新更新