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 …

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

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 capturar una vista web a bitmap en Android?
  • Llamar al servicio web WSDL mediante el uso de retrofit android
  • alerta en la vista web incorporada
  • Cómo restablecer completamente la vista web de Android antes de cargar la nueva solicitud
  • Cómo mostrar texto marathi en Android procedente de webservice
  • Comprobar si los datos de campo han cambiado en lugar de cualquier campo en los datos secundarios
  • Vista web de Android: evita que los gestos táctiles se pasen a la vista principal de los padres
  • Que puede reemplazar la función capturePicture
  • Android Fragmento WebView
  • ¿Cómo llamar a un servicio web .NET desde android?
  • Webview dentro de fragmento android apertura fuera de la aplicación en un navegador
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.