Xin chào,viewpager + webview, cách dừng xem web tải
Tôi đã tạo một ứng dụng sử dụng ViewPager và tất cả các trang chứa WebViews. Mỗi Webview chứa các hình ảnh máy chủ, video, mp3 ...
Các thiết lập WebView là
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);
}
}
});
}
Vấn đề là khi các trang được swiped sau đó cũng dòng này
Log.i(TAG, "webview loading progress : "+ progress);
đang thực hiện điều đó có nghĩa các lượt xem web đang tải trong nền. Nếu tôi vuốt 4 hoặc nhiều trang, tất cả các lần xem trang web sẽ tải.
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);
}
}
Làm cách nào để dừng tải khi trang không hiển thị? setOffscreenPageLimit (1) (có nghĩa là 3 trang prev, cur, next),
Trong Viewpager, 2 trang (nghĩa là 1 trang vị trí) không tải đúng cách. Nó cho thấy một trang trắng trống, làm thế nào để giải quyết nó?
Cảm ơn trước
tôi đã sử dụng stopLoading(), nhưng nó liều không dừng tải nền, bất cứ khi nào destroyItem (.. .) được gọi là webview dừng tải phải không? nhưng sẽ không ngừng tải. –
Không hoàn toàn chắc chắn, nhưng bạn không cần đặt OffscreenPageLimit thành 0? – THelper
tôi đã thử pager.OffscreenPageLimit (0) nhưng không hoạt động. –