Android бесконечная загрузка URL-адреса

#java #android #url #timeout

#java #Android #url #тайм-аут

Вопрос:

Я создаю приложение, которое на заставке загружает данные из файла через URL-адрес в Интернете. В настоящее время это приложение работает, опубликовано и получает отличные отзывы 🙂

Однако я заметил, что на некоторых устройствах (а именно на HTC Desire), когда я создаю URL-адрес, скажем, как:

 url = new URL("https://www.blah.com/blah.txt");
 

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

Теперь, как я уже сказал, это, похоже, только для HTC Desire, поскольку большинство устройств используют мое приложение без сбоев. И это происходит не на каждом HTC Desire с приложением. Устройства, у которых возникают проблемы, похоже, возникают спорадически. Иногда приложение будет работать нормально, иногда оно будет загружаться бесконечно. Когда это происходит, это происходит как на WiFi, так и на 3G. Если пользователь убивает приложение, пока оно бесконечно зависает, а затем снова открывается, оно устраняет проблему и загружается нормально.

У меня здесь нет идей … у кого-нибудь есть? Единственное, что я могу придумать, это попробовать другой конструктор, может быть, такой:

 url = new URL("https", "www.blah.com", 443, "/blah.txt");
 

но я не слишком разбираюсь в сети, и мне трудно определить другие порты, которые можно использовать. Сайт, который я использую, является сайтом «https».

Заранее благодарим вас за помощь.

Комментарии:

1. Они работают через какой-то прокси? Каков ваш размер выборки? Вы видели, как это происходит на 1 телефоне HTC Desire или 20?

Ответ №1:

Вы можете установить тайм-аут соединения с setConnectTimeout() помощью on URLConnection объекта. Это позволит вам перехватить SocketTimeoutException и либо повторить попытку, либо сделать что-то еще.