tengo vista web que carga alguna página, cuando esté terminado aplico algo de JavaScript magia para desordenar con DOM. Todo está bien, carga la página y onPageFinished
acabo de llamar wv.loadUrl(javascript);
Android WebView + LoadURL con javascript + onPageFinished = lag
Pero no quiero ver proceso de carga, y cómo Javascript está trabajando, sólo necesito resultado, así que hice mi punto de vista invisible con wv.setVisibility(View.INVISIBLE);
desde el principio, y hazlo visible de nuevo cuando todo esté hecho. Aquí es donde ocurre el problema.
Esta pieza de código debería hacer la vista visible después Javascript está terminado, pero wv.setVisibility(View.VISIBLE)
incendios antes de JavaScript. Entonces, por un momento, veo la página y cómo está siendo modificada por javascript. Esto es feo.
public void onPageFinished (WebView view, String url) {
wv.loadUrl(javascript);
view.getSettings().setLoadsImagesAutomatically(true);
wv.setVisibility(View.VISIBLE);
}
Tengo que LoadURL funciona de forma asíncrona, así que traté de hacer otra WebViewClient con sólo "hacer visible primera vista" método dentro onPageFinished
, y lo utilizan para llamar a JS. Pero sigue fallando con el error de NPE.
wv2.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished (WebView view, String url) {
wv.setVisibility(View.VISIBLE);
}
});
por retraso de ahora me acaba de agregar después de Javascript (SystemClock.sleep(5000)
), pero esto es como .. sí.
Creo que tenemos una solución para este error: http://android-know-how-to.blogspot.co.il/2013/08/android-webview-javascript-onpagefinish.html – TacB0sS