我有一个应用程序通过发布请求将数据发送到服务器。这个请求可能会失败,如果确实如此,我希望它重试直到它最终发送,类似于 WhatsApp:如果你在离线时发送消息,它会保持挂件状态,当你再次上线时,消息会被发送。
由于我不知道 WhatsApp 内部是如何工作的,我对如何实现它有一些疑问。我想了两个办法:
1- 将 AbstractThreadedSyncAdapter 设置为每 X 次(如 30 秒)执行一次,检查是否有数据要发送,如果有,则将其发送到服务器。
2-当用户单击以发送一些数据时,我创建一个尝试发送它的线程,如果失败,它会休眠几秒钟并重试。
我真的不喜欢这些选项中的任何一个。第一个将增加电池使用量,因为即使不需要,应用程序也会每 X 秒执行一次操作。如果请求失败很多次,第二个将使用大量电池。
有没有更好的方法呢?如果有一种简单的方法可以检测手机是否连接到互联网,那就太棒了。
谢谢!