帮助我设计一个更好的解决方案,在单个应用用户和服务器之间同步聊天消息。如果应用程序脱机,我想将消息存储在应用程序数据库中,并在互联网可用时将其推送到服务器。如果有人向用户发送消息,我想根据时间戳正确安排它们。但在这种情况下,时间夯是否可靠?
答案 0 :(得分:1)
是的时间戳是可靠的。但请确保在发送待处理队列中的邮件时不更新时间戳。
期待这一点的方法是创建一个广播管理器,因为你已经拥有了app-db,所以事情很简单。
第1步:创建BroadCastReceiver
以监听网络更改
可以找到一个好的SO帖子here
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
用于检测连接变化。
第2步:为您的消息创建int标志:
其中:assume:int
0 - &gt;未发送的
1→发送
2→阅读等...
因此,每当用户发送消息时,请使用this检查互联网连接,如果互联网无法存储到您的应用本地数据库,请使用flag-&gt; 0
其他信息发布到服务器< / p>
如果你从服务器得到一个肯定的回调,请将它保存为flag-&gt; 1否则再次为0。
步骤3:现在,在广播接收器的onRecieve
方法中,检查更改后的状态是否为已连接状态(如建立网络连接),然后从数据库中提取所有使用标志保存的消息 - 大于0
并重新将它们重新发送到服务器,并在步骤2中再次进行验证检查:只需确保这次更新它们,而不是重新创建新条目!
那应该是它!