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?

  • WebView: solicitud incorrecta al cargar una url
  • Android WebView no sólo de vídeo audio
  • Envoltura de HTML en una aplicación para Android
  • ¿Cuál es la mejor manera de raspar este código HTML para una aplicación para Android?
  • Restauración del estado de vista web que contiene HTML generado dinámicamente
  • Android addJavascriptInterface equivalente en iOS
  • ¿Cómo puedo encontrar la cantidad de datos que se transfieren cuando hago una llamada de servicio web desde mi aplicación android?
  • Utilizar ChromeView en la aplicación para Android
  • API de Android 23. WebView cómo ignorar errores de JavaScript
  • Tratando de conectar la aplicación de Android a .NET ".svc" webservice y el servidor responde Tipo de soporte no compatible
  • Ampliar / reducir en webview android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.