2015-02-09 45 views
0

我是android开发新手。我正在实现一个XMPP客户端来与我的服务器上运行的XJabberd服务交谈。我相信它会保持与afaik需要定期发送保持活动消息的服务器的持久连接。android上的XMPP客户端:潜在的电池问题

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

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

+0

WhatsApp不是XMPP。通过完全控制服务器,他们可以使用推送通知,而不会丢失消息。 – 323go 2015-02-09 18:47:18

+0

问题是你会多久检查一次连接,通过发送服务器ping或空白保持连接。这是长时间连接导致电池消耗的主要原因。 – Flow 2015-02-09 18:59:06

+0

@ 323go它肯定是XMPP的一些变种,我相信。不管如何,正如Flow提到的那样,XMPP客户端需要不停地向服务器发送保持活动的消息,但我在有史以来耗尽电量的应用程序中看不到Whatsapp。这是否意味着电池消耗,因为这是相对于其他应用程序而言是最小的 – 2015-02-09 19:42:48

回答

0

我相信它会维持到 服务器,(据我所知),就需要定期发送保持活动 消息的持久连接。

你不需要那个。根据我的经验,如果在此期间没有任何活动,则每30分钟发送一次XMPP Ping到服务器已足够。 Smack的ServerPingWithAlarmManager会自动为您做到这一点。

对于未检测到“陈旧”连接的持续时间以及测试TCP连接是否仍然存活的频率,您总会有一种权衡。没有任何机制或实体可以避免为其中的任何一方做出决定,甚至不包括GCM或WhatsApp。

0

立即交货

保持消息

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