하이브리드 앱인데 사이트의 html을 수정을 하였지만

캐시가 남아 웹뷰에서 깨지는 현상이 발견되어

새로고침 버튼을 누를시에 확실히 캐시를 날리고 싶어 확인하던중

이미 웹뷰에 clear cache를 하고있는 것을 확인했다.



public void onPageFinished(WebView view, String url) {
   webView.clearHistory();
   webView.clearCache(true);
   webView.clearView();
   super.onPageFinished(view, url);
}


그러나 그래도 뭔가 부족했다...(캐시가 확실히 안지워지는 느낌)
웹뷰에 캐시가 남은게 아니라 앱 캐시가 남아서 그런게 아닐까 라는 생각에

그냥 캐시 디렉토리를 날려버리기 위해 소스를 추가했다.



public void clearApplicationCache(Context context, File file) {
    File dir = null;
    if (file == null) {
        dir = context.getCacheDir();
    } else {
        dir = file;
    }

    if (dir == null) return;

    File[] children = dir.listFiles();
    try {
        for (int i = 0; i < children.length; i++)
            if (children[i].isDirectory())
                clearApplicationCache(context, children[i]);
            else
                children[i].delete();
    } catch (Exception e) {
    }
}


이렇게 함수를 만든후


새로고침 버튼을 눌렀을때
clearApplicationCache(mContext, null);
이렇게 사용하니
확실히 설정에서 확인 할 수있는 앱 메모리 크기가 눈에띄게 줄어드는걸 확인 할 수 있었다.


캐싱이 짜증나서 페이지 로딩때 마다 클리어해버리면
트래픽이 과도하게 증가할수있으니 특정 버튼(새로고침 버튼)을 눌렀을때 처럼 특정 상황일때만

캐시 디렉토리를 날리게 하는것이 바람직할것 같은 생각이 든다.


+ Recent posts