在本地保存webView内容以在下次离线加载内容

时间:2017-04-10 12:22:40

标签: android android-fragments webview

我有以下UseCase

其中有Fragment WebView。加载片段后,我对服务器进行API调用,返回html作为响应。我想在设备本地保存此响应,以便下次加载片段时,我能够立即显示内容。

我使用以下代码将数据设置为WebView。

 WebView webView = // Find View By Id.
 webView.setWebViewClient(new MyWebViewClient());

 //This function is called when response is received from the server.
 @Override
  public void showWebItem(String baseUrl, String content) {
    webView.loadDataWithBaseURL(baseUrl, HtmlFontHelper.wrapDataWithHTML(content),
    Constants.HTML_MIME_TYPE,
    Constants.HTML_UTF_ENCODING, null);
}

上述UseCase的解决方案:

  1. 覆盖onPageFinished()的{​​{1}}功能。在WebViewClient方法中,调用onPageFinished()函数,该函数将以.mht格式保存saveWebArchive()的内容。

    WebView
  2. 下次加载片段时,请在进行服务器调用之前检查.mht文件是否存在。如果文件存在,请从.mht文件加载内容。否则拨打服务器电话。

    private class MyWebViewClient extends WebViewClient {
        @Override
        public void onPageFinished(WebView view, String url) {
            String folderName = Utils.getApplication().getFilesDir().getAbsolutePath() + "/cachedFiles";
            File folder = new File(folderName);
    
            if (!folder.exists()) {
                folder.mkdir();
            }
            webView.saveWebArchive(folderName + "/" + "sample.mht");
        }
    }
    
  3. 我可以使用上面的代码实现上述功能。但我想确保这是正确的做法。使用这种方法有任何陷阱吗?如果有人通过类似的用例,请告诉我。

0 个答案:

没有答案