Hola,viewpager + webview, cómo detener webview cargando
He creado una aplicación que utiliza ViewPager y todas las páginas contienen WebViews. Cada vista Web contiene imágenes de servidor, videos, mp3 ...
Los ajustes son 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 se pasáses 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 deslizo 4 páginas o más, se cargan todas las vistas web.
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, la página 2 (significa página de 1 posición) no se carga correctamente. Muestra una página blanca en blanco, ¿cómo la resuelvo?
Gracias de antemano
he utilizado StopLoading(), pero no dejan de dosis de carga del fondo, siempre que sea destroyItem (.. .) se llama webview stop the loading right? pero no para de cargar –
No del todo seguro, pero ¿no necesita configurar OffscreenPageLimit en 0? – THelper
intenté pager.OffscreenPageLimit (0) pero no funciona. –