未连接到服务器时,从Android webview中的应用缓存加载javascript
我有一个使用webview的Android应用程序。有一个java后端服务器提供所有前端文件,并通过ApacheTomcat构建缓存清单
我的问题是,当服务器未连接,但设备已连接到internet时,我不确定如何从应用程序缓存加载webview
如果我进入应用程序代码,我可以强制它使用缓存
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
所以我知道我的文件被适当地缓存了。我还尝试了其他堆栈溢出问题的解决方案,这些问题让我检查网络状态,并根据网络状态设置缓存模式,如下所示:
cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
if(cm.getActiveNetworkInfo().isConnected()) ....
但是,如果设备处于联机状态,但我的服务器已关闭,则此操作不起作用。它仍然说网络在这种情况下是正常的,不会从缓存加载
理想的解决方案是,当前端webview试图通过网络访问资源而资源不可用时,它只是从缓存加载,这正是它在普通浏览器中的工作方式。但我可以接受解决办法,比如让应用程序检测到我的特定服务器的网络连接,并相应地更改缓存模式
有人知道解决这个问题的最佳方法吗?谢谢
# 1 楼答案
所以问题似乎是android根本不使用HTML5应用程序缓存,除非你告诉它,这真的让我想不起来了。我使用以下代码解决了这个问题:
然后它表现出了我所期望的应用缓存的表现。也就是说,如果不能通过网络加载资源,它将从缓存加载资源,如缓存清单中的缓存部分所指定