Rendimiento de Android WebView
En mi aplicación, estoy cargando una lista de url externo en webview y permito que el usuario los revise. Las vistas Web se cargan en una aleta de vista. Encuentro que el funcionamiento es realmente malo en url de la carga de la tela. He intentado de todo, desde el uso de la trama de diseño para limitar el número de webviews a cargar. Sin embargo, el rendimiento no es satisfactorio.
¿Cómo optimizo el rendimiento de webview? Esto debe ser un uso común. ¿Estoy perdiendo algo obvio?
- Android: ¿Cómo hacer que mi idioma de soporte de webview mientras carga una url?
- ¿En un WebView hay una manera para que shouldOverrideUrlLoading determine si está cogiendo una redirección contra un usuario que chasca un acoplamiento?
- Vista Web con No hay configuraciones EGL adecuadas encontradas error
- Ninguno de los métodos en la interfaz añadida se han anotado con @ android.webkit.JavascriptInterface; No serán visibles en API 17
- Webview shouldinterceptrequest ejemplo
Mis configuraciones de Webview son –
webView.setInitialScale(WEBVIEW_SCALE); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setBuiltInZoomControls(false); webView.setWebViewClient(new MyWebViewClient()); webView.setOnTouchListener( new OnTouchListener());
- ¿Cómo puedo hacer que webview use el manifiesto de caché HTML5?
- Acceso denegado utilizando almacenamiento local en Android WebView
- WebView lanza Receptor no registrado: android.widget.ZoomButtonsController
- Abrir URL en webView en android
- Frameloader buscar extra UA String - UAProfURL
- ¿Cómo configurar WebView como no fullscreen?
- Bucle muerto en backkey android webview para redireccionar href link
- ¿Cómo crear una vista web personalizada en Android?
Prueba esto:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); } else { webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); }
Creo que lo siguiente funciona mejor:
if (Build.VERSION.SDK_INT >= 19) { webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); } else { webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); }
Android 19 tiene motor Chromium para WebView. Supongo que funciona mejor con la aceleración de hardware.
Para más información Android 4.4 KitKat, el navegador y Chrome WebView
Esto ya se ha discutido aquí: Mejorar el rendimiento de webView (debe ser el mismo rendimiento que el navegador web nativo)
Me encontré con un problema similar, y después de una gran depuración notado el navegador nativo y navegador WebView parecen estar utilizando diferentes cachés.
Este código se puede utilizar para desactivar la caché de WebView, y hecho WebView mucho más rápido para mí (aunque a expensas de no caché). Tenga en cuenta que utiliza APIs privadas, por lo que al utilizarlo usted está arriesgando el código se romperá en futuras versiones:
try { Method m = CacheManager.class.getDeclaredMethod("setCacheDisabled", boolean.class); m.setAccessible(true); m.invoke(null, true); } catch (Throwable e) { Log.i("myapp","Reflection failed", e); }
- Navegación por teclado con Android GridView no se desplaza por la cuadrícula
- Error de Gradle: No se encontró com.android.tools.build:gradle:2.2.3