0
내 웹 뷰에 HTML 문자열을로드하고 있습니다. 내 코드 :webView 캐싱이 loadDataWithBaseURL()과 작동하지 않습니다.
public class AboutUsFragment extends SherlockFragment {
String url = CommonUtils.aboutUsUrl;
private FetchTask fetchTask = null;
WebView webView = null;
@SuppressLint("SetJavaScriptEnabled")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.wrapper, container, false);
webView = (WebView) rootView.findViewById(R.id.wrapper);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAppCacheMaxSize(5 * 1024 * 1024); // 5MB
webView.getSettings().setAppCachePath(
getSherlockActivity().getCacheDir().getAbsolutePath());
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAppCacheEnabled(true);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// check whether internet connection is available or not
ConnectionDetector cd = new ConnectionDetector(getSherlockActivity());
boolean hasConnection = cd.isConnectingToInternet();
if(hasConnection) {
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
fetchTask = new FetchTask();
fetchTask.execute();
} else {
MainActivity.networkAvailabilityNotice(getSherlockActivity());
webView.getSettings().setCacheMode(
WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
}
protected class FetchTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
// data fetching from JSON feed
return data;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
webView.loadDataWithBaseURL("", result, "text/html", "UTF-8", "");
}
}
}
문제는 캐시가 작동하지 않는 것입니다. 즉, 웹 페이지가 오프라인 모드로 표시되지 않습니다. 나는 과거에 loadURL() 메소드로 캐시를 제공했다. 오프라인 모드에서 loadDataWithBaseURL()
으로 웹보기 캐시를 제공하는 방법은 무엇입니까?