¿Qué se considera onPageFinished en el WebViewClient para Android?

Estoy intentando realizar una acción en un WebView de Android después de que mi página web termine de cargarse. Configurar mi WebView para tener un WebViewClient para hacer uso de la devolución de llamada de evento onPageFinished. Sin embargo, después de algunas pruebas, no parece que esperar hasta que todos los JS en la página se realiza la carga antes de mi código onPageFinished se dispara.

La documentación de Google dice esto:

public void onPageFinished (WebView view, String url) 

Añadido en el nivel de API 1 Notificar a la aplicación host que una página ha terminado de cargar. Este método se llama sólo para el marco principal. Cuando onPageFinished () se llama, la imagen de renderizado no se puede actualizar todavía. Para obtener la notificación para la nueva imagen, use onNewPicture (WebView, Imagen).

Parámetros

vista El WebView que está iniciando la devolución de llamada.

url La url de la página.

1) ¿EnPageFinished solo espera a que el DOM se cargue?

2) ¿Hay una manera de detectar cuando termina cualquier JS en la página? Si es así, ¿qué debo usar?

No veo nada en WebViewClient que sea para ese propósito. No quiero añadir un retraso ya que mis usuarios pueden estar en EDGE o en LTE.

Es necesario implementar las devoluciones de llamada de WebChromeClient. El onPageFinished () es una API que es proporcionada por WebViewClient. Hay otra interfaz llamada WebChromeClient que proporciona la información de progreso que está buscando:

http://developer.android.com/reference/android/webkit/WebChromeClient.html#onProgressChanged(android.webkit.WebView , int)

Abra el enlace anterior y busque onProgressChanged (vista WebView, int newProgress) – la variable 'newProgress' le da el porcentaje de carga de página que se completó. Cuando llega a 100 tiene una página válida. onPageFinished () no se puede utilizar de forma fiable para esto (debido a redirecciones de servidor, etc)

No sé a qué se refiere cuando "JS en la página está terminado". Tal vez usted puede aclarar lo que quería decir?

Para responder a su primera pregunta: He encontrado que onProgressChanged no alcanzará 100 , y onPageFinished no será llamado hasta que todos los activos (css / js / images) hayan terminado de cargar esa página.

Sin embargo, no puedo encontrar ninguna documentación oficial que indique eso.

  • ¿Qué hace stopLoading () realmente hacer?
  • Android: cómo interceptar un formulario POST en android WebViewClient en el nivel 4 de API
  • Controlador de protocolo WebView de Android
  • Log <GATE-M> DEV_ACTION_COMPLETED </ GATE-M> parece retrasar la ejecución en Android
  • ¿WebViewClient y WebChromeClient se excluyen mutuamente?
  • El controlador onScaleChanged de WebView se llama varias veces
  • Webview - cambiar la fuente de la página antes de mostrar el sitio web?
  • Deshabilitar Android WebView / WebViewClient Iniciado favicon.ico Solicitar
  • Android: abra los vínculos _blank de destino en WebView con un navegador externo
  • Vista Web de Android
  • Android 4.4 dando ERR_CACHE_MISS error en onReceivedError para WebView volver
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.