Android 从Url缓存并保存WebView中的所有图像内容,然后将其加载
我有在Android上运行的Web应用程序。我可以缓存我的web,所以若用户并没有internet连接,他仍然可以从缓存访问web但它仅在用户未连接Internet时运行 现在,为了优化我的应用程序,当用户连接到互联网时,我想缓存Android 从Url缓存并保存WebView中的所有图像内容,然后将其加载,android,image,caching,webview,Android,Image,Caching,Webview,我有在Android上运行的Web应用程序。我可以缓存我的web,所以若用户并没有internet连接,他仍然可以从缓存访问web但它仅在用户未连接Internet时运行 现在,为了优化我的应用程序,当用户连接到互联网时,我想缓存WebView中显示的所有图像,并将其本地存储/缓存,当用户打开与我缓存的src图像相同的页面时,从本地加载,而不是再次从web加载。或者可能不是图像,而是访问它的html页面缓存它,当用户再次返回url页面时,Webview从本地而不是从internet加载它 我已经
WebView
中显示的所有图像,并将其本地存储/缓存,当用户打开与我缓存的src图像相同的页面时,从本地加载,而不是再次从web加载。或者可能不是图像,而是访问它的html
页面缓存它,当用户再次返回url页面时,Webview
从本地而不是从internet加载它
我已经搜索代码两天了,但仍然没有找到解决方案
谢谢你的帮助。试试这个
private void enableWVCache() {
webView.getSettings().setDomStorageEnabled(true);
// Set cache size to 8 mb by default. should be more than enough
webView.getSettings().setAppCacheMaxSize(1024*1024*8);
File dir = getCacheDir();
if (!dir.exists()) {
dir.mkdirs();
}
webView.getSettings().setAppCachePath(dir.getPath());
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
}
然后
if ( !isNetworkAvailable() ) { // loading offline
webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
}
方法isNetworkAvailable()
检查活动网络连接:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
最后,不要忘记将以下三个权限添加到您的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"/>
谢谢,但它会缓存所有页面吗?我只想缓存图像。@MukhlisSaputro它缓存整个页面。