DefaultHttpClient тайм-аут значений и повторов на Android - PullRequest
0 голосов
/ 17 ноября 2011

Я столкнулся с проблемой того, что HTTP-запросы нашего Android-приложения довольно часто истекают, и мне нужно найти разумный уровень для пределов времени ожидания и количества повторных попыток.

Текущее реализованное решение (не моя реализация) с использованием apache DefaultHttpClient выполняет три попытки вручную с увеличением таймаутов, как показано здесь:

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

Мне трудно понять обоснование того, почему текущая реализация использует увеличивающиеся таймауты и что это пытается решить. Приложение большую часть времени используется, когда телефон подключен к 3G. Есть ли у кого-нибудь объяснение, почему увеличение времени ожидания при каждой повторной попытке было бы предпочтительным, или, возможно, у кого-то есть лучший способ обработки HTTP-запросов в сетях 3G?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Я не вижу причин делать это, а не просто использовать самый большой тайм-аут с самого начала. Может быть, кто-то еще может.

Возможно, немного оффтоп, но я бы хотел обратить ваше внимание на эту статью , в которой предлагается перейти на HttpURLConnection, поскольку она есть и будет лучше поддерживаться в будущем. Прочитайте его полностью, чтобы увидеть преимущества и недостатки HttpURLConnection перед библиотеками Apache и решить, стоит ли его переключать.

1 голос
/ 17 ноября 2011

Возможно, что при очень медленной сети подключение может занять много времени. А с другой стороны, возможно, что соединение не будет установлено даже в более быстрой сети.

Таким образом, имеет смысл иметь первую попытку с более коротким таймаутом, чтобы повторить попытку раньше в случае потери соединения в быстрой сети. Но я не могу придумать причину, по которой время ожидания постоянно увеличивается.

Поскольку существует такое большое количество сетей, практически невозможно собрать достоверные данные о типичном времени соединения и времени ожидания. Я предполагаю, что числа, которые вы видите, выбраны не эмпирически.

...