0

Android アプリの HTTP リクエストが頻繁にタイムアウトするという問題に直面しており、タイムアウト制限と再試行回数の妥当なレベルを見つける必要があります。

Apache DefaultHttpClient を使用して現在実装されているソリューション (私の実装ではない) は、次のようにタイムアウトを増やして 3 回手動で再試行しています。

private static final int[] CONNECTION_TIMEOUTS = new int[] {4000, 5000, 10000};
private static final int[] SOCKET_TIMEOUTS = new int[] {5000, 8000, 15000};

現在の実装が増加するタイムアウトを使用している理由と、これが解決しようとしている理由を理解するのに苦労しています。このアプリは、ほとんどの場合、電話が 3G に接続されているときに使用されます。再試行のたびにタイムアウトを増やすことが望ましい理由、または 3G ネットワークでの HTTP 要求処理のベスト プラクティスを誰かが持っている理由を誰かが説明していますか?

4

2 に答える 2

2

最初から最大のタイムアウトを使用するだけでなく、それを行う理由はわかりません。たぶん、他の誰かができるでしょう。

トピックから少し外れているかもしれませんが、この記事に注目していただきたいと思います。この記事では、そのままで に移行することを提案してHttpURLConnectionおり、将来的にはより適切にサポートされる予定です。全体を読んで、Apache ライブラリに対する長所と短所を確認し、HttpURLConnection切り替える価値があるかどうかを判断してください。

于 2011-11-17T13:38:15.533 に答える
1

非常に低速なネットワークでは、接続に時間がかかる可能性があります。その一方で、より高速なネットワークでも接続に失敗する可能性があります。

そのため、高速ネットワークで接続が少し「失われた」場合に備えて、最初の試行をより短いタイムアウトでより早く再試行することは理にかなっています。しかし、タイムアウトが継続的に増加する理由は考えられません。

非常に多数のネットワークがあるため、通常の接続時間とタイムアウト時間に関する適切なデータを収集することはほとんど不可能です。表示される数値は経験的に選択されたものではないと思います。

于 2011-11-17T13:37:23.597 に答える