У меня есть WebView, который загружает какую-то страницу, когда она заканчивается, я применяю магию javascript, чтобы портить DOM. Все хорошо, страница загружается и onPageFinished
я просто звоню wv.loadUrl(javascript);
Но я не хочу видеть процесс загрузки, и как работает javascript, мне просто нужен результат, поэтому я сделал мой взгляд невидимым с помощью wv.setVisibility(View.INVISIBLE);
с самого начала и снова сделал его видимым, когда все будет сделано. Вот где возникает проблема.
Этот фрагмент кода должен сделать видимость видимой после завершения работы javascript, но wv.setVisibility(View.VISIBLE)
запускается перед использованием javascript. Так что на мгновение я вижу страницу и как она меняется с помощью JavaScript. Это просто безобразно.
public void onPageFinished (WebView view, String url) {
wv.loadUrl(javascript);
view.getSettings().setLoadsImagesAutomatically(true);
wv.setVisibility(View.VISIBLE);
}
Я понял, что loadUrl работает асинхронно, поэтому я попытался создать еще один WebViewClient с помощью метода «make first view visible» внутри onPageFinished
и использовать его для вызова JS. Но он просто продолжает сбой с ошибкой NPE.
wv2.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished (WebView view, String url) {
wv.setVisibility(View.VISIBLE);
}
});
Пока я просто добавил задержку после javascript (SystemClock.sleep(5000)
), но это похоже на ... да.