내 활동 중 하나에 WebView가 있고 웹 페이지를로드 할 때 페이지가 Facebook에서 배경 데이터를 수집합니다.
그래도 내가 보는 것은 응용 프로그램에 표시된 페이지가 앱을 열고 새로 고칠 때마다 동일하다는 것입니다.
캐시를 사용하지 않고 WebView의 캐시 및 기록을 지우도록 WebView를 설정하려고 시도했습니다.
또한 여기 제안을 따랐습니다. WebView의 캐시를 비우는 방법?
그러나이 중 어느 것도 작동하지 않습니다.이 문제는 내 응용 프로그램의 중요한 부분이기 때문에이 문제를 극복 할 수 있다는 생각이있는 사람은 없습니다.
mWebView.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
if(progress >= 100)
{
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
}
else
{
mProgressBar.setVisibility(ProgressBar.VISIBLE);
}
}
});
mWebView.setWebViewClient(new SignInFBWebViewClient(mUIHandler));
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.clearHistory();
mWebView.clearFormData();
mWebView.clearCache(true);
WebSettings webSettings = mWebView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
Time time = new Time();
time.setToNow();
mWebView.loadUrl(mSocialProxy.getSignInURL()+"?time="+time.format("%Y%m%d%H%M%S"));
그래서 첫 번째 제안을 구현했습니다 (코드를 재귀 적으로 변경했지만)
private void clearApplicationCache() {
File dir = getCacheDir();
if (dir != null && dir.isDirectory()) {
try {
ArrayList<File> stack = new ArrayList<File>();
// Initialise the list
File[] children = dir.listFiles();
for (File child : children) {
stack.add(child);
}
while (stack.size() > 0) {
Log.v(TAG, LOG_START + "Clearing the stack - " + stack.size());
File f = stack.get(stack.size() - 1);
if (f.isDirectory() == true) {
boolean empty = f.delete();
if (empty == false) {
File[] files = f.listFiles();
if (files.length != 0) {
for (File tmp : files) {
stack.add(tmp);
}
}
} else {
stack.remove(stack.size() - 1);
}
} else {
f.delete();
stack.remove(stack.size() - 1);
}
}
} catch (Exception e) {
Log.e(TAG, LOG_START + "Failed to clean the cache");
}
}
}
그러나 이것은 여전히 페이지에 표시되는 내용을 변경하지 않았습니다. 내 데스크톱 브라우저에서 WebView에서 생성 된 웹 페이지와 다른 html 코드를 얻고 있으므로 WebView가 어딘가에 캐싱해야 함을 알고 있습니다.
IRC 채널에서 URL 연결에서 캐싱을 제거하는 수정 사항을 지적했지만 아직 WebView에 적용하는 방법을 볼 수 없습니다.
http://www.androidsnippets.org/snippets/45/
내 응용 프로그램을 삭제하고 다시 설치하면 웹 페이지를 캐시되지 않은 버전과 같은 최신 상태로 되돌릴 수 있습니다. 주요 문제는 웹 페이지의 링크가 변경되어 웹 페이지의 프런트 엔드가 완전히 변경되지 않는다는 것입니다.
mWebView.getSettings().setAppCacheEnabled(false);
작동하지 않았습니까?