我正在尝试为 Android 做一个即时消息应用程序,我已经制作了将消息发送到我的数据库的界面,它工作正常。问题是我不知道如何让侦听器接收来自数据库的传入消息。
我正在考虑使用计时器每隔 5 或 10 秒询问一次,如果有新消息发送给客户端,请下载它。我试过了,如果我使用的是应用程序,它可以工作,但是当我使用相同的代码通知客户端新消息时,计时器不起作用,并且客户端永远不会收到通知。
希望你能帮助我一些想法。谢谢。
使用计时器会在该时间间隔内完全耗尽手机电池。您需要考虑使用Google Cloud Messaging或XMPP
通知设备有新消息到达
正如前面的答案所建议的那样,使用计时器是电池寿命的一个非常糟糕的主意。谷歌云消息/XMPP 听起来不错,您可以使用广播接收器来处理传入的消息。
从大约查看本教程:使用 Google Cloud Messaging (GCM) 创建即时消息应用程序
显示了上述技术的清晰实现。它还有一个用 java 编写的基本服务器后端,在 google app engine 上运行。帮助我在 android 中构建我的即时通讯项目。
收到消息时,API 会自动支持它们,这会将它们从服务器中删除。
并且轮询 10 次意味着读取、处理和刷新缓冲区 10 次,因此在第 7 次轮询期间,您不会仍然会从第一次轮询中找到数据。
此外,我建议您也可以使用 MQTT 在您的 android 应用程序中实现即时消息传递。使用 Eclipse Paho Android 库来实现 MQTT。它有自己的onMessageArrived()
方法,每当收到新消息时都会调用该方法。
每 5 到 10 秒检查一次新消息是一种不好的做法,因为它会耗尽电池电量。MQTT 与 MQTTserver 建立低级 TCP 连接,是即时消息传递的理想选择。
使用广播接收器处理传入的消息不要在每 5 分钟或 10 分钟后使用拉连接,这会消耗电池使用 GCM(谷歌云消息传递)