java – 在Oreo中没有持久通知的情况下,whatsapp和即时消息应用程序如何在后台运行?

前端之家收集整理的这篇文章主要介绍了java – 在Oreo中没有持久通知的情况下,whatsapp和即时消息应用程序如何在后台运行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在stackoverflow和 Android文档上学到了什么.
最后我得出结论:

无法为连续任务创建后台服务.如果我真的想要一个服务,我应该启动一个前台服务,用户不断看到一个持久的通知“应用程序正在运行”.无法隐藏此通知.它是由谷歌有意添加的.
是的,还有其他选项,如WorkManager和JobScheduler,但它们确实定期不连续工作.

我想要的是构建一个即时消息应用程序,它使用xmpp或套接字连续连接到服务器.但它需要连续的连接,但我不想使用前台服务,因为它向用户显示一个恼人的通知“应用程序正在运行”.

问题1:Whatsapp和其他即时消息应用程序如何持续连接到服务器但不显示持久通知?他们是如何做到这一点的?

问题2:如果Whatsapp使用FCM进行通知,那么它也适用于那些没有安装playservices的手机,那么Whatsapp通知机制如何运作?

解决方法

从Android 6.0(API级别23)开始,Android推出了两项省电功能,可延长用户的电池续航时间:DOZE和APP STANDBY.当手机处于打盹模式时,这两个功能会对您的后台处理施加许多限制.您应该在以下链接中阅读有关Doze和app standby的信息

https://developer.android.com/training/monitoring-device-state/doze-standby

现在,关于您的用例是,即使应用程序未运行,您也希望接收消息和来电.对于此用例,Android在GoogleIO2016中发布了高优先级FCM消息.它们是高优先级的Push消息,它授予应用程序临时唤醒锁和网络访问权限,与Device的Doze状态无关,或者应用程序恰好位于应用程序待机状态.这允许应用程序对消息做出反应,并以任何方式通知用户即时消息或来电.

我不知道WhatsApp到底是怎么做的,除非我查看他们的代码,但你可以使用FCM高优先级消息来处理你的用例.
有关您的使用案例的更多信息,请在08:30至10:30之间按照以下链接访问GoogleIO2016视频

https://www.youtube.com/watch?v=VC2Hlb22mZM&t=505s

并在此答案的第一个链接上阅读此用例.

猜你在找的Java相关文章