Por alguna razón el onPageFinished está disparando antes de la vista Web ha terminado de cargar - No puedo entender por qué ...no onPageFinished disparar correctamente cuando se representa la página web
public class WebViewClientTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final WebView webview = (WebView) findViewById(R.id.webview);
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(webview, url);
webview.scrollTo(0, 500);
}
});
webview.loadUrl("http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=lala");
}
}
OK, así que parece así no está arreglado Creo que hay una condición de carrera al cargar la página, pero no se puede obtener un comportamiento reproducible.
Estoy almacenando el contenido HTML de una página web en una base de datos SQLite para ver cuando está fuera de línea. Vuelvo a cargar el contenido en el WebView con:
webView.loadDataWithBaseURL("fake://fake.com/", htmlBody, "text/html", "utf-8", null);
Parece que a veces, cuando la carga WebView se dispara el método WebViewClient.onPageFinished() correctamente, y otras veces no lo hace. A veces parece que se dispara antes de que la página haya terminado de cargarse, produciendo una altura de contenido 0 e ignorando cualquier llamada de scrollTo.
¿Alguien tiene alguna experiencia con esto?
Perfecto - gracias! Solo quiero agregar que esto en NewPicture se dispara incluso después de que un evento de desplazamiento ha terminado, así que tuve que codificar esto, pero lo anterior funciona perfectamente. – DaBeeeenster
, excepto que ahora está en desuso (compatibilidad con tabletas - cielo) :( Así que utilizo una llamada javascript que supera el WebChromeClient onProgressChanged() en términos de tiempo de devolución ... Sólo tiene que tener cuidado en qué Thread está operando cuando obtienes la devolución (uso el Handler de WebView con una llamada retrasada) - todo lo que se dice, voy a ver qué tan bien WebChromeClient.onProgressChanged() realiza – Dan
hay una mejor manera de hacerlo –