私はViewPagerの項目としてwebViewを設定する必要がある1つのアプリケーションで作業しています。私は、私が持っているURLのarrayListのサイズとして毎回フラグメントのnewInstace()
を作成して使用しました。 しかし、私はmPager.setOffscreenPageLimit(myArray.size())
を設定すると、読み込むURLが20以上ありますので、負荷が大きすぎます。 mPager.setOffscreenPageLimit(1)
を使用すると、毎回リロードされます。だから、毎回ウェブページの再ロードを防ぐ方法はありますか?ViewPagerに設定されたキャッシュからWebviewデータを読み込みます。
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;
}
}
は、どのように私は、クッキーから再びWebページをロードすることができますか? –
webview.load(url)を呼び出すと、自動的に呼び出されます。 – Ameer
また、webView.getSettings()を追加します。setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); – Ameer