非同期ソケット接続を介してサーバーと通信し、やや大きな情報パケット (最大 11 メガバイト) を転送する Android アプリがあります。この相互作用に対応するために、データの送受信の重要なポイントに小さなスリープを配置しました。WiFiでは、接続は機能します。1回の読み取りまたは書き込みでは十分ではないようですが、転送が完了するまでソケットから読み取り続ける関数を作成しました。
私が言ったように、これはすべてWiFiで機能します。ただし、3G またはエッジ ネットワークでは、転送が失敗し、途中で中断され、一般にバグが発生します。情報が通過する機会を確実に与えるために、私は多くのチェックとスリープを配置しましたが、失敗しました。
残念ながら、問題の原因を明確にすることは困難です。私はこの問題を可能な限りエレガントに解決しようと数日間働きましたが、役に立ちませんでした。
TLDNR WiFi はデータを送信できますが、モバイル ネットワークは失敗します。その理由と修正方法を知る必要があります。
ありがとうございました。