Điều đó nghe có vẻ giống như một cơ chế lưu vào bộ nhớ cache webview đơn giản đối với tôi.
Sau đây nên làm những gì bạn đang tìm kiếm:
WebView webView = new WebView(context);
webView.getSettings().setAppCacheMaxSize(5 * 1024 * 1024); // 5MB
webView.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); // load online by default
if (!isNetworkAvailable()) { // loading offline
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
webView.loadUrl("http://www.google.com");
Phương pháp này isNetworkAvailable()
kiểm tra các kết nối mạng đang hoạt động:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Cuối cùng, đừng quên thêm ba điều khoản sau đây đến số AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
điều này thực sự hoàn chỉnh .. hoạt động như một sự quyến rũ! cảm ơn bạn rất nhiều vì đã cho tôi thấy chế độ bộ nhớ cache – mstation
Đừng lo lắng, vui vì nó đã giúp :) – jenzz
@ jenzz: Tôi có hai vấn đề với giải pháp của bạn. Đầu tiên, trong trường hợp của tôi, tất cả những gì xuất hiện trong bộ đệm ẩn (thẻ sd bên ngoài) là một tệp * trống * có tên là 'ApplicationCache.db'. Không nên lớn hơn ?? Có lẽ bộ nhớ cache đang được lưu trữ ở nơi khác? Thứ hai, điều '.setAppCacheMaxSize()' không được chấp nhận trong API18, không chắc chắn cách thêm nhiều chache nữa ... –