【发布时间】:2017-11-22 11:47:40
【问题描述】:
我正在开发一个需要将 webView 设置为 ViewPager 项目的应用程序。我每次都使用创建片段的newInstace() 作为我拥有的URL 的arrayList 的大小来做到这一点。
但是,我有超过 20 个 URL 需要加载,所以如果我设置 mPager.setOffscreenPageLimit(myArray.size()) 会占用太多的负载。如果我使用mPager.setOffscreenPageLimit(1),那么它每次都会重新加载。那么,有没有什么办法可以防止每次都重新加载网页呢?
public static class PlaceholderFragment extends BaseFragment {
Activity activity;
private int media_position = 0;
private String media_url = "";
private static final String KEY_CONTENT = "CategoriesFragment:Content";
private String mContent = "???";
public static PlaceholderFragment newInstance(int media_position, String media_url) {
PlaceholderFragment fragment = new PlaceholderFragment();
fragment.media_position = media_position;
fragment.media_url = media_url;
return fragment;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(KEY_CONTENT, mContent);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
mContent = savedInstanceState.getString(KEY_CONTENT);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
web1 = inflater.inflate(R.layout.fragment_main, container, false);
activity = getActivity();
mWebView1 = (WebView) web1.findViewById(R.id.webview);
mWebView1.setWebViewClient(new WebViewClient());
mWebView1.getSettings().setJavaScriptEnabled(true);
mWebView1.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView1.getSettings().setSupportMultipleWindows(true);
mWebView1.getSettings().setSupportZoom(true);
mWebView1.getSettings().setBuiltInZoomControls(false);
mWebView1.getSettings().setAllowFileAccess(true);
mWebView1.getSettings().setAppCacheEnabled(true);
mWebView1.getSettings().setDomStorageEnabled(true);
mWebView1.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
mWebView1.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
boolean isLoaded = false;
if (Utils.LoadedUrlList.containsKey(Utils.currentUrl)) {
Log.e("Matched key", "media_position --> " + media_position + " currentUrl --> " + Utils.currentUrl);
isLoaded = true;
} else {
Log.e("Not Matched", "media_position --> " + media_position + " media_url --> " + media_url);
isLoaded = false;
}
Log.e("onPageStarted", "onPageStarted");
if (!isLoaded)
if (media_position == 0)
ShowProgressDialog(activity, activity.getString(R.string.loading));
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.e("onPageFinished", "onPageFinished");
Log.e("onPageFinished", "--> " + url);
hideProgressDialog();
CookieSyncManager.getInstance().sync();
for (int i = 0; i < Utils.SocialURLList.size(); i++) {
if (url.equals(Utils.SocialURLList.get(i))) {
Utils.LoadedUrlList.put(Utils.SocialURLList.get(0), true);
}
}
}
});
mWebView1.loadUrl(media_url);
return web1;
}
}
【问题讨论】:
标签: android webview android-viewpager