2013-02-26 4 views
3

Я хотел бы предварительно загрузить кеш WebView с веб-страницы из Интернета. Это необходимо сделать асинхронно и скрыть, чтобы не нарушать другие взаимодействия с пользовательским интерфейсом. Цель предварительной загрузки состоит в том, чтобы избежать последующих сетевых вызовов, если WebView представлен путем дополнительного нажатия кнопки (в конечном счете для более быстрого отображения).Предварительная загрузка кэша WebView

Веб-страница содержит Javascript и AJAX, поэтому я не думаю, что предварительная загрузка кеша с использованием чего-то вроде HttpClient будет работать. Я также посмотрел на использование loadUrl() WebView в AsyncTask, но я вижу, что это конфликтует с основным потоком пользовательского интерфейса.

Неужели кто-нибудь с подобной ситуацией нашел способ выполнить предварительную загрузку/кеширование фона?

+0

ли вы это? http://stackoverflow.com/questions/7944546/android-webview-load-in-background –

ответ

3

WebView загружает данные в отдельный поток по умолчанию, поэтому нет необходимости использовать AsyncTask. Просто создайте скрытый WebView и вызовите loadUrl().

Если вы хотите предварительно загрузить более одного URL-адреса, вы можете использовать WebViewClient и переопределить onPageFinished(), чтобы определить, когда первый будет завершен. Когда вы закончите с WebView, убедитесь, что вы удалили ссылки на него, чтобы он мог собирать мусор.

Наконец, если вы хотите, чтобы убедиться, что видимая WebView всегда использует кэшированную версию URL, если таковой имеется, вы можете позвонить:

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK). 
Смежные вопросы