POSTリクエストを使用してサーバーにデータを送信するアプリケーションがあります。このリクエストは失敗する可能性があり、最終的に送信されるまで再試行したい場合は、WhatsAppに似ています。オフラインのときにメッセージを送信すると、ペンダントとして残り、再びオンラインになるとメッセージが送信されます。
WhatsAppが内部でどのように機能するかわからないため、それを実装する方法に疑問があります。私は2つの方法を考えました:
1-送信するデータがあるかどうかを確認するX回(30秒など)ごとに実行されるようにAbstractThreadedSyncAdapterを設定し、データがある場合はサーバーに送信します。
2-ユーザーがクリックしてデータを送信すると、そのデータを送信しようとするスレッドを作成します。失敗した場合は、数秒間スリープしてから再試行します。
私はこれらのオプションのどれも本当に好きではありません。1つ目は、アプリケーションが不要な場合でもX秒ごとに操作を実行するため、バッテリーの使用量が増加します。2つ目は、リクエストが何度も失敗した場合に大量のバッテリーを使用します。
それを行うためのより良い方法はありますか?電話がインターネットに接続されているかどうかを簡単に検出する方法があれば素晴らしいと思います。
ありがとう!