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