我有以下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的解决方案:
覆盖onPageFinished()
的{{1}}功能。在WebViewClient
方法中,调用onPageFinished()
函数,该函数将以.mht格式保存saveWebArchive()
的内容。
WebView
下次加载片段时,请在进行服务器调用之前检查.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");
}
}
我可以使用上面的代码实现上述功能。但我想确保这是正确的做法。使用这种方法有任何陷阱吗?如果有人通过类似的用例,请告诉我。