Witam,ViewPager + WebView, jak zatrzymać ładowanie strony internetowej
Stworzyłem aplikację, która korzysta z ViewPager, a wszystkie strony zawierają WebView. Każdy Webview zawiera obrazy serwerowych, wideo, mp3 ...
Ustawienia Webview są
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);
}
}
});
}
Problem jest, gdy strony są następnie przeciągnął także ta linia
Log.i(TAG, "webview loading progress : "+ progress);
jest wykonywany co oznacza, te wyświetlenia stron internetowych ładują się w tle. Po przesunięciu 4 lub więcej stron ładują się wszystkie wyświetlenia stron.
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);
}
}
Jak zatrzymać ładowanie w tle, jeśli strony nie są widoczne? setOffscreenPageLimit (1) (oznacza 3 strony prev, cur, next),
W aplikacji Viewpager 2 strona (oznacza 1 stronę pozycji) nie ładuje się prawidłowo. Pokazuje pustą białą stronę, jak ją rozwiązać?
góry dzięki
Użyłem stopLoading(), ale dawka nie zatrzymać ładowanie w tle, gdy destroyItem (.. .) nazywa się webview zatrzymać prawo ładowania? ale nie zatrzymuj ładowania. –
Nie do końca pewny, ale czy nie trzeba ustawić OffscreenPageLimit na 0? – THelper
Próbowałem pager.OffscreenPageLimit (0), ale nie działa. –