Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android上的XMPP客户端:潜在电池问题_Android_Xmpp_Battery_Whatsapp - Fatal编程技术网

android上的XMPP客户端:潜在电池问题

android上的XMPP客户端:潜在电池问题,android,xmpp,battery,whatsapp,Android,Xmpp,Battery,Whatsapp,我是android开发的新手。我正在实现一个XMPP客户端,以便与服务器上运行的XJabberd服务进行通信。我相信它将保持与服务器的持久连接,afaik将需要定期发送保持活动的消息 这是电池寿命的问题吗?我相信是的,GCM是减少这种影响的方法。但是,GCM不保证 1.立即交付和 2.维护设备脱机时发送的消息 是否有任何其他替代/方法来减少电池冲击。任何解释Whatsapp应用程序工程方面的文件 我相信它将保持与网络的持久连接 afaik需要定期发送保持活动状态的服务器 信息 你不需要那个。根据

我是android开发的新手。我正在实现一个XMPP客户端,以便与服务器上运行的XJabberd服务进行通信。我相信它将保持与服务器的持久连接,afaik将需要定期发送保持活动的消息

这是电池寿命的问题吗?我相信是的,GCM是减少这种影响的方法。但是,GCM不保证 1.立即交付和 2.维护设备脱机时发送的消息

是否有任何其他替代/方法来减少电池冲击。任何解释Whatsapp应用程序工程方面的文件

我相信它将保持与网络的持久连接 afaik需要定期发送保持活动状态的服务器 信息

你不需要那个。根据我的经验,如果在这段时间内没有任何活动,那么每30分钟向服务器发送一次XMPP Ping就足够了。Smack's会自动为你这么做

在您希望过时的连接不被检测到的时间和测试TCP连接是否仍然存在的频率之间,您总是要进行权衡。没有任何机制或实体可以避免为其中任何一个做出决定,即使是GCM或WhatsApp

立即交货

信息的维护


CGM应该用于发送关于现有消息的通知,而不是消息本身。您的服务器应该维护消息,并使用GCM进行通知。即使用户不会收到通知,它也会在下一个XMPP连接上收到消息。

WhatsApp不是XMPP。在完全控制服务器的情况下,他们可以在不丢失消息的情况下使用推送通知。问题是您通过发送服务器ping或空格keep alives来检查连接的频率。这是持久连接导致电池消耗的主要原因。我相信这一定是XMPP的某个变体。不管怎样,正如Flow所提到的,XMPP客户端将需要继续向服务器发送保持活动的消息,但我从来没有在我最耗电的应用程序中看到Whatsapp。这是否意味着与其他应用程序相比,它的电池消耗量是最小的?你没有抓住我评论的要点——像WhatsApp这样的私有筒仓不会受到与遵循标准(如XMPP)相同的限制。如果您可以完全控制服务器的运行方式,那么您就不需要让客户端频繁地保持连接的活动状态。客户端可以通过推送通知得到警报,也可以通过comet连接获得低延迟响应。我想我现在明白你的意思了。为了确认我的理解是否正确,我相信你的建议是:为了节省电池,没有必要一直保持连接。然而,服务器可以使用GCM发送推送通知,并且在收到该通知后,客户端可以恢复连接。但是,这不能保证即时通信。这听起来不错。谢谢