1

我有一个应用程序通过发布请求将数据发送到服务器。这个请求可能会失败,如果确实如此,我希望它重试直到它最终发送,类似于 WhatsApp:如果你在离线时发送消息,它会保持挂件状态,当你再次上线时,消息会被发送。

由于我不知道 WhatsApp 内部是如何工作的,我对如何实现它有一些疑问。我想了两个办法:

1- 将 AbstractThreadedSyncAdapter 设置为每 X 次(如 30 秒)执行一次,检查是否有数据要发送,如果有,则将其发送到服务器。

2-当用户单击以发送一些数据时,我创建一个尝试发送它的线程,如果失败,它会休眠几秒钟并重试。

我真的不喜欢这些选项中的任何一个。第一个将增加电池使用量,因为即使不需要,应用程序也会每 X 秒执行一次操作。如果请求失败很多次,第二个将使用大量电池。

有没有更好的方法呢?如果有一种简单的方法可以检测手机是否连接到互联网,那就太棒了。

谢谢!

4

1 回答 1

1

在您的场景 2 中,您可以在初始帖子未能在一段时间后触发重新发送时设置警报。如果发送成功,您将取消警报(或不安排另一个警报)。

为了在设备上线时引起注意,您可以查看以下答案:https ://stackoverflow.com/a/11084311/100957

于 2012-09-26T11:43:49.167 回答