3

我正在尝试为 Android 做一个即时消息应用程序,我已经制作了将消息发送到我的数据库的界面,它工作正常。问题是我不知道如何让侦听器接收来自数据库的传入消息。

我正在考虑使用计时器每隔 5 或 10 秒询问一次,如果有新消息发送给客户端,请下载它。我试过了,如果我使用的是应用程序,它可以工作,但是当我使用相同的代码通知客户端新消息时,计时器不起作用,并且客户端永远不会收到通知。

希望你能帮助我一些想法。谢谢。

4

5 回答 5

5

使用计时器会在该时间间隔内完全耗尽手机电池。您需要考虑使用Google Cloud MessagingXMPP通知设备有新消息到达

于 2013-07-17T15:55:58.427 回答
1

正如前面的答案所建议的那样,使用计时器是电池寿命的一个非常糟糕的主意。谷歌云消息/XMPP 听起来不错,您可以使用广播接收器来处理传入的消息。

从大约查看本教程使用 Google Cloud Messaging (GCM) 创建即时消息应用程序

显示了上述技术的清晰实现。它还有一个用 java 编写的基本服务器后端,在 google app engine 上运行。帮助我在 android 中构建我的即时通讯项目。

于 2014-10-02T19:25:29.570 回答
1

收到消息时,API 会自动支持它们,这会将它们从服务器中删除。

并且轮询 10 次意味着读取、处理和刷新缓冲区 10 次,因此在第 7 次轮询期间,您不会仍然会从第一次轮询中找到数据。

于 2017-03-02T12:37:55.373 回答
1

此外,我建议您也可以使用 MQTT 在您的 android 应用程序中实现即时消息传递。使用 Eclipse Paho Android 库来实现 MQTT。它有自己的onMessageArrived()方法,每当收到新消息时都会调用该方法。

每 5 到 10 秒检查一次新消息是一种不好的做法,因为它会耗尽电池电量。MQTT 与 MQTTserver 建立低级 TCP 连接,是即时消息传递的理想选择。

于 2015-12-18T08:49:49.397 回答
0

使用广播接收器处理传入的消息不要在每 5 分钟或 10 分钟后使用拉连接,这会消耗电池使用 GCM(谷歌云消息传递)

于 2014-05-09T09:34:27.463 回答