android 中 webview 怎么用 localStorage
答案:2 悬赏:70 手机版
解决时间 2021-02-05 03:54
- 提问者网友:孤凫
- 2021-02-04 06:14
android 中 webview 怎么用 localStorage
最佳答案
- 五星知识达人网友:封刀令
- 2021-02-04 06:26
默认WebView没有开启LocalStorage存储。
代码如下:
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAppCacheMaxSize(1024*1024*8);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
mWebView.getSettings().setAppCachePath(appCachePath);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
或者是:
wvBrowser.getSettings().setJavaScriptEnabled(true);
// 开启DOM缓存。
wvBrowser.getSettings().setDomStorageEnabled(true);
wvBrowser.getSettings().setDatabaseEnabled(true);
wvBrowser.getSettings().setDatabasePath(context.getApplicationContext().getCacheDir().getAbsolutePath());
setDatabasePath在API19时已经废弃,原因是因为在4.4WebView的内核已经换为了Chrome的内核,存储路径有WebView控制。
代码如下:
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAppCacheMaxSize(1024*1024*8);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
mWebView.getSettings().setAppCachePath(appCachePath);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
或者是:
wvBrowser.getSettings().setJavaScriptEnabled(true);
// 开启DOM缓存。
wvBrowser.getSettings().setDomStorageEnabled(true);
wvBrowser.getSettings().setDatabaseEnabled(true);
wvBrowser.getSettings().setDatabasePath(context.getApplicationContext().getCacheDir().getAbsolutePath());
setDatabasePath在API19时已经废弃,原因是因为在4.4WebView的内核已经换为了Chrome的内核,存储路径有WebView控制。
全部回答
- 1楼网友:上分大魔王
- 2021-02-04 08:04
webview的缓存可以分为页面缓存和数据缓存。
页面缓存是指加载一个网页时的html、js、css等页面或者资源数据。这些缓存资源是由于浏览器的行为而产生,开发者只能通过配置http响应头影响浏览器的行为才能间接地影响到这些缓存数据。
他们的索引存放在/data/data/package_name/databases下。他们的文件存放在/data/data/package_name/cache/xxxwebviewcachexxx下。文件夹的名字在2.x和4.x上有所不同,但都文件夹名字中都包含webviewcache。
数据缓存分为两种:appcache和dom storage(web storage)。他们是因为页面开发者的直接行为而产生。所有的缓存数据都由开发者直接完全地掌控。
appcache使我们能够有选择的缓冲web浏览器中所有的东西,从页面、图片到脚本、css等等。尤其在涉及到应用于网站的多个页面上的css和javascript文件的时候非常有用。其大小目前通常是5m。
在android上需要手动开启(setappcacheenabled),并设置路径(setappcachepath)和容量(setappcachemaxsize)
android中webkit使用一个db文件来保存appcache数据(my_path/applicationcache.db)
如果需要存储一些简单的用key/value对即可解决的数据,dom storage是非常完美的方案。根据作用范围的不同,有session storage和local storage两种,分别用于会话级别的存储(页面关闭即消失)和本地化存储(除非主动删除,否则数据永远不会过期)。
在android中可以手动开启dom storage(setdomstorageenabled),设置存储路径(setdatabasepath)
android中webkit会为dom storage产生两个文件(my_path/localstorage/http_h5.m.taobao.com_0.localstorage和my_path/localstorage/databases.db)
另外,在android中清除缓存时,如果需要清除local storage的话,仅仅删除local storage的本地存储文件是不够的,内存里面有缓存数据。如果再次进入页面,local storage中的缓存数据同样存在。需要杀死程序运行的当前进程再重新启动才可以。
html5的离线应用功能可以使得webapp即使在网络断开的情况下仍能正常使用,这是个非常有用的功能。近来工作中也要用到html5离线应用功能,由于是在android平台上做,所以自然而然的选择webview来解析网页。但如何使webivew支持html5离线应用功能呢,经过反复摸索和上网查找资料,反复做试验终于成功了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯