Viewpager + webview, cómo detener la carga de la webview
Hola,
He creado una aplicación que utiliza ViewPager y todas las páginas contienen WebViews. Cada Webview contiene imágenes de servidor, videos, mp3 …
- ¿Cómo puedo encontrar la cantidad de datos que se transfieren cuando hago una llamada de servicio web desde mi aplicación android?
- Fondo-adjunto: fijo no funciona en android / móvil
- Android Webview goback () problema con el método loadDataWithBaseURL
- Android webview css margen izquierda / derecha no funciona
- ¿Cómo se puede pasar JSON a AngularJS en la vista web de Android?
Los ajustes de WebView
public Object instantiateItem(View collection, int position) { . . . final RelativeLayout imageLayout = (RelativeLayout) inflater.inflate(R.layout.omb_webview_layout, null); WebView webview = (WebView) imageLayout.findViewById(R.id.video_view); ProgressBar pbImage = (ProgressBar) imageLayout.findViewById(R.id.progressBar1); webview.requestFocus(View.FOCUS_DOWN); webview.getSettings().setBuiltInZoomControls(false); webview.getSettings().setSupportZoom(true); webview.getSettings().setUseWideViewPort(true); webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setLoadWithOverviewMode(true); webview.getSettings().setUseWideViewPort(true); webview.setWebViewClient(new mWebViewClient()); webview.getSettings().setPluginsEnabled(true); webview.clearCache(true); webview.clearHistory(); if(Pbar != null) { webview.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { Log.i(TAG, "webview loading progress : "+ progress); if(progress == 100) { try { Pbar.setVisibility(ProgressBar.GONE); } catch (Exception e) { Log.e(TAG, "timer progress GONE : "+ progress,e); } } }); }
El problema es cuando las páginas son barridas entonces también esta línea
Log.i(TAG, "webview loading progress : "+ progress);
Está ejecutando lo que significa que las vistas web se cargan en segundo plano. Si hago un pase de 4 o más páginas, todas las webviews se cargan.
destroyItem(View collection, int position, Object o) { Log.d("DESTROY", "destroying view at position sheetal " + position); RelativeLayout view = (RelativeLayout)o; WebView tmp = webviewDictionary.get(position);; tmp.getSettings().setJavaScriptEnabled(false); tmp.stopLoading(); if(tmp != null){ Log.i(TAG, "sheetal webview is destroyed " +position ); try { tmp.onPause(); tmp.loadDataWithBaseURL("about:blank", "<html></html>","text/html", "UTF-8", null); tmp=null; // tmp.destroy(); } catch (Exception e) { Log.i(TAG, "webview destroyed Exception 0" ,e); } }
¿Cómo detener la carga de fondo si las páginas no están visibles? SetOffscreenPageLimit (1) (significa 3 páginas prev, cur, next),
En Viewpager, 2 página (significa 1 página de posición) no se está cargando correctamente. Muestra una página en blanco, ¿cómo puedo solucionarla?
Gracias por adelantado
- La pantalla de Android gira el problema
- ¿Cómo puedo abrir una aplicación de mi navegador web (Chrome) en Android? ¿Qué tengo que ver con el enlace A Href?
- Cómo tratar un objeto JSON grande en Android
- Android WebView eliminarCookie
- Configurar una base de datos de servidor en línea y codificar mi aplicación nativa de Android para interactuar con ella
- Pestaña servidores no visible en eclipse v3.7.2
- Phonegap - Córdoba es lenta y lenta en dispositivos Android y iOS
- Android webview tiene borde blanco alrededor de él y cómo puedo deshacerme de él?
Esto resolvió mi problema.
He creado un diccionario, contiene 3 webview con la posición como clave.
Aquí estoy añadiendo webviews en el diccionario
public Object instantiateItem(View collection, int position) { . . . webviewDictionary.put(position, webView); . . . }
Limpieza de las webs es de diccionario
public void cleanAllWebViews() { try { if(webviewDictionary != null){ Iterator<Integer> webViewIterator = webviewDictionary.keySet().iterator(); while(webViewIterator.hasNext()) { Integer key=(Integer)webViewIterator.next(); WebView webView = (WebView) webviewDictionary.get(key); webView.stopLoading(); // webView.pauseTimers(); webView.setWebChromeClient(null); webView.setWebViewClient(null); webView.loadDataWithBaseURL("about:blank", "<html></html>","text/html", "UTF-8", null); webViewIterator.remove(); } } webviewDictionary = null; }catch (Exception e) { Log.e(TAG, "ombook last call onPauseAllWebviews Exception",e ); } } and @Override public void onBackPressed() { cleanAllWebViews(); System.gc(); super.onBackPressed(); }
Has intentado "OffscreenPageLimit" establecido en 1? 0 es un valor no válido de acuerdo con esta publicación: ViewPager.setOffscreenPageLimit (0) no funciona como se esperaba
Además, ¿ha tratado de manejar algunos eventos de cambio entre las páginas, de modo que cada vez que cambie una página, la vista de la página actual deje de cargar o comience a cargar un archivo html vacío?
- ¿Cómo puedo integrar los anuncios AirPush en mi aplicación Android?
- Nodos de la nube de Appengine generación de cliente que no genera el archivo jar de origen