¿Es posible separar la interfaz de usuario de WebView y los subprocesos HTTP?
Por varias razones, necesito runOnUiThread () la instanciación real y la inicialización de WebView .
¿Qué significa que sus conexiones HTTP subyacentes también se hacen en el hilo de interfaz de usuario?
- Android: uso no válido de SingleClientConnManager: conexión aún asignada
- ¿Cómo ir para el token de actualización automáticamente cuando el token de acceso venció y obtener 401 usando HttpURLConnection en android?
- Conexión HTTP de Android: varios dispositivos no pueden conectar el mismo servidor
- Cómo cargar la imagen en el servidor en Android?
- Envío de datos POST en Android
Si esto es cierto, ¿es posible separar el tutorial de la interfaz de usuario de WebView del subproceso de conexiones HTTP?
Si es posible, ¿cuál es la manera correcta de lograr esto?
- ConnectionTimeout versus SocketTimeout
- Programa se bloquea en .connect () en Android, no se conecta
- Aplicación androide "Sin certificado par"
- Es posible detener un subproceso que se está conectando a URL con httpConnection.connect ()?
- Android: Fuera de error de memoria StringBuilder
- No se puede conectar mediante httpconnection en android
- Cómo tratar los problemas de la red
Me resulta muy difícil creer que Android podría ejecutar peticiones HTTP remotas en el hilo de interfaz de usuario, asumiendo que iniciar las solicitudes a través de WebView.loadUrl()
. Esto haría para una experiencia de usuario terrible.
Rápidamente, corrí una aplicación de Android en el depurador, con un WebView
básico, y me detuve en el depurador. Esto es lo que veo:
Si WebViewCoreThread
, WebViewWorkerThread
o http0
– http3
no gestionan las conexiones de red para objetos WebView
,
- Tienen muy malos nombres
- Android se construye muy mal
Además, si observa esta respuesta por uno de los usuarios de mayor reputación de stack overflow, loadUrl () es asíncrono . Un paso rápido en el depurador me dice que loadUrl()
, que se llama en el subproceso de UI (también conocido como main
), se completa demasiado rápido para que la conexión se gestione de forma síncrona en el subproceso de interfaz de usuario. (Puse un punto de interrupción antes y después de la llamada a loadUrl()
con una URL que sé que no se sirve muy rápidamente).
Por lo tanto, mi respuesta es que ya está … ya están separados! (¡sí!)