Мне нужно знать, когда страница действительно заканчивает загрузку

Я еще новичок в Android, и у меня есть приложение, в котором есть веб-просмотр.

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

В webviewclient функции onPageStarted и onPageFinished вызываются один раз для каждого перенаправления, как и onNewPicture (даже несмотря на то, что во время перенаправления экран всегда пуст). Поэтому я не могу быть уверен, когда он вызывался в последний раз (страница фактически загружалась).

Я также пытался использовать onLoadResource для подсчета количества загруженных ресурсов (опасный и ненадежный подход, но я уже впадаю в отчаяние), но это тоже не удалось, так как после кэширования страницы она вызывается только один или два раза.

Это одна большая головоломка, которую я не могу решить, используя то, что я знаю до сих пор, может ли кто-нибудь мне помочь?

Заранее большое спасибо.


person leparlon    schedule 13.10.2010    source источник


Ответы (1)


Неожиданно кажется, что у вас есть веб-сайт, который нужно переписать... :-)

Вот две возможности, о которых я могу думать:

  1. Если вы получаете onPageFinished() и не получаете onPageStarted() после такого-то периода времени, предположим, что перенаправления выполнены.
  2. Если все эти перенаправления являются перенаправлениями HTTP (коды состояния ответа 3xx), вы можете использовать HttpClient для навигации по перенаправлениям, пока не получите окончательный URL-адрес, а затем укажите этот URL-адрес для отображения WebView.
person CommonsWare    schedule 13.10.2010
comment
Кстати, я попробовал ваше предложение, я сейчас считаю время между каждым стартом и финишем, и игнорируя очень быстрые (редиректы) таким образом, худшее, что может случиться, это удалить заставку раньше времени на очень очень очень быстрое соединение 3G... Думаю, все будет хорошо... Спасибо - person leparlon; 15.10.2010