2013-04-16 2 views
1

나는 WebView 컨트롤을 가지고 있으며 매번 현재 사이트를 보여주고 싶지만 WebView는 캐시 된 버전의 사이트 만 표시한다고 생각합니다. 내가 찾은 모든 시도는 here 그러나 아무것도 작동하지 않는 것 같습니다. context.getCacheDir()에서 모든 파일을 삭제하려고했지만 성공하지는 못했습니다. 내가 무엇을 할 수 있을지?안드로이드 WebView - 캐시 지우기

clearCache(this, 0); 

    setContentView(R.layout.webview); 

    deleteDatabase("webview.db"); 
    deleteDatabase("webviewCache.db"); 

    mWebView = (WebView)findViewById(R.id.webview); 
    mWebView.setWebViewClient(new CenterWebViewClient(this)); 
    mWebView.setWebChromeClient(new CenterWebChromeClient(this)); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.getSettings().setAppCacheEnabled(false); 
    mWebView.getSettings().setAppCacheMaxSize(1); 
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 

    String url = "https://www.exacmple.com"; 

    if (url != null) { 
     Map<String, String> noCacheHeaders = new HashMap<String, String>(2); 
     noCacheHeaders.put("Pragma", "no-cache"); 
     noCacheHeaders.put("Cache-Control", "no-cache"); 
     mWebView.loadUrl(url, noCacheHeaders); 
    } 

위해 clearCache 기능 :

이것은에서 onCreate 메소드로부터 내 코드 인 웹보기를 통해

@Override 
public void onPageFinished(WebView view, String url) { 
    super.onPageFinished(view, url); 
    view.clearCache(true); 
} 

을 표시 할 때마다 캐시를 ​​지울 수 있습니다처럼

static int clearCacheFolder(final File dir, final int numDays) { 

    int deletedFiles = 0; 
    if (dir!= null && dir.isDirectory()) { 
     try { 
      for (File child:dir.listFiles()) { 

       //first delete subdirectories recursively 
       if (child.isDirectory()) { 
        deletedFiles += clearCacheFolder(child, numDays); 
       } 

       //then delete the files and subdirectories in this dir 
       //only empty directories can be deleted, so subdirs have been done first 
       if (child.lastModified() < new Date().getTime() - numDays * DateUtils.DAY_IN_MILLIS) { 
        if (child.delete()) { 
         deletedFiles++; 
        } 
       } 
      } 
     } 
     catch(Exception e) { 
      Log.e("WebView", String.format("Failed to clean the cache, error %s", e.getMessage())); 
     } 
    } 
    return deletedFiles; 
} 

    public static void clearCache(final Context context, final int numDays) { 
     Log.i("WebView", String.format("Starting cache prune, deleting files older than %d days", numDays)); 
     int numDeletedFiles = clearCacheFolder(context.getCacheDir(), numDays); 
     Log.i("WebView", String.format("Cache pruning completed, %d files deleted", numDeletedFiles)); 
    } 
+0

http://stackoverflow.com/questions/2465432/android-webview-completely-clear-the-cache합니다. http://stackoverflow.com/questions/6542943/clearing-all-cached-items-created-by-a-webview – Raghunandan

+0

나는 그것을했다, 작동하지 않는다 –

+0

당신이 한 것을 보여 줌 – Raghunandan

답변

1

이것은 캐시가 아닌 서버 측 세션에서만 문제가되었지만 쿠키를 삭제해야만 작동합니다.

+0

쿠키는 어떻게 지 웠습니다. 너는 설명해 주실 수 있겠습니까 – Adi

+0

안녕하세요 @Adi, 지금은 기억이 안나지만 아마도 브라우저 설정에서 쿠키를 삭제했습니다. –

0

하면 쿠키는 귀하의 APP을 형성 지우려면 :

CookieSyncManager.createInstance(this);   
CookieManager cookieManager = CookieManager.getInstance();   
cookieManager.removeAllCookie();