gpt4 book ai didi

android - 从 Url 缓存并保存 WebView 中的所有图像内容并加载它

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:40 25 4
gpt4 key购买 nike

我有在 Android 中运行的 Web 应用程序。我可以缓存我的网站,所以如果用户没有互联网连接,他仍然可以从缓存访问网站。 但它仅在用户没有 Internet 连接时运行

现在,为了优化我的应用程序,当用户有互联网连接时,我想缓存显示在 WebView 中的所有图像并将其存储在本地/缓存它,以及何时用户打开一个页面,其中包含我缓存的相同 src 图像,它从本地加载,而不是再次从 Web 加载。或者 可能不是图像,而是访问缓存它的 html 页面,当用户再次返回 url 页面时,Webview 从本地加载它,而不是从互联网加载它。

找了两天代码还是没找到解决办法。

感谢您的帮助。

最佳答案

试试这个

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() 方法检查 Activity 网络连接:

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"/>

关于android - 从 Url 缓存并保存 WebView 中的所有图像内容并加载它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35237197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com