투케이2K

11. (TWOK/ERROR) [Android] 웹뷰 (webview) 로드 시 캐시 초기화 되지 않는 이슈 - cache, CookieManager, deleteDatabase 본문

투케이2K 에러관리

11. (TWOK/ERROR) [Android] 웹뷰 (webview) 로드 시 캐시 초기화 되지 않는 이슈 - cache, CookieManager, deleteDatabase

투케이2K 2022. 4. 9. 17:40

[환경 설정 및 설명]

프로그램 : AndroidStudio

설 명 : 웹뷰 (webview) 로드 시 캐시 초기화 되지 않는 이슈 - cache, CookieManager, deleteDatabase

 

[에러 원인]

1. main_webview.clearCache(true); 설정 만으로는 캐시가 초기화되지 않는 이슈 발생

 

[해결 방법]

1. clearCache , CookieManager , deleteDatabase 를 통해서 추가 캐시 및 세션 삭제 수행 실시

            // -----------------------------------------
            // TODO [WebView 컴포넌트 매핑 설정]
            main_webview = (WebView)findViewById(R.id.main_webview);
            // -----------------------------------------


            // -----------------------------------------
            // TODO [웹뷰 쿠키 및 세션 관리를 위한 쿠키 매니저 선언]
            CookieManager cookieManager = CookieManager.getInstance();
            // -----------------------------------------


            // -----------------------------------------
            // TODO [웹뷰의 캐시를 초기화 실시 : 일반 적용 방법]
            try {
                main_webview.clearCache(true);
                main_webview.clearHistory();
                main_webview.clearView();
            }
            catch (Exception e){
                //e.printStackTrace();
            }
            // -----------------------------------------


            // -----------------------------------------
            ///*
            // TODO [웹뷰의 캐시를 초기화 실시 : 쿠키 매니저를 통한 캐시 제거]
            try {
                cookieManager.removeSessionCookies(new ValueCallback<Boolean>() {
                    @Override
                    public void onReceiveValue(Boolean aBoolean) {
                        Log.i("---","---");
                        Log.d("//===========//","================================================");
                        Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> init_WebView() :: 사전 쿠키 및 세션 데이터 삭제]");
                        Log.i("","\n"+"[session :: "+String.valueOf(aBoolean)+"]");
                        Log.d("//===========//","================================================");
                        Log.i("---","---");
                    }
                });
                cookieManager.removeAllCookies(new ValueCallback() {
                    @Override
                    public void onReceiveValue(Object value) {
                        Log.i("---","---");
                        Log.d("//===========//","================================================");
                        Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> init_WebView() :: 사전 쿠키 및 세션 데이터 삭제]");
                        Log.i("","\n"+"[cookies :: "+String.valueOf(value)+"]");
                        Log.d("//===========//","================================================");
                        Log.i("---","---");
                    }
                });
                cookieManager.getInstance().flush();
            }
            catch (Exception e){
                //e.printStackTrace();
            }
            // */
            // -----------------------------------------


            // -----------------------------------------
            ///*
            // TODO [웹뷰의 캐시를 초기화 실시 : deleteDatebase 를 이용한 직접 제거]
            try {
                A_Main.this.deleteDatabase("webview.db");
                A_Main.this.deleteDatabase("webviewCache.db");

                Log.i("---","---");
                Log.d("//===========//","================================================");
                Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> init_WebView() :: 사전 쿠키 및 세션 데이터 삭제]");
                Log.i("","\n"+"[로 직 :: 웹뷰 deleteDatabase 수행]");
                Log.d("//===========//","================================================");
                Log.i("---","---");
            }
            catch (Exception e){
                //e.printStackTrace();
            }
            // */
            // -----------------------------------------



            // -----------------------------------------
            // TODO [웹뷰 로드 수행 실시]
            main_webview.loadUrl(url);
            // -----------------------------------------
 
반응형
Comments