마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

WebClient onPageFinished() 여러번 호출되는 문제

0 추천

WebClient에서 onPageFinished() 메서드가 여러번 호출 되는데 한번씩 호출 되게 할 수 없을까요??

구글에 있는 소스 적용해봐도 똑같아서 여기에 질문드립니다!!

 class WebClient extends WebViewClient {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            Log.d(TAG, "WebClient, onPageStarted, Call");
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Log.d(TAG, "WebClient, shouldOverrideUrlLoading, Call");
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            Log.d(TAG, "WebClient, onPageFinished, Call");
//            Log.d(TAG, "onPageFinished, url : " + url);
            currentUrl = url;

            if(stop) {
                cookieClear();
                webView.clearHistory();
                webView.clearCache(true);

                if (!webView.canGoBack()) {
                    Toast.makeText(MainActivity.this, "HistoryClear & CookieClear ", Toast.LENGTH_SHORT).show();
                }
            } else if(oneStepCount == 1 && twoStepCount == 1 && !stop) {
                webView.clearHistory();

                if(!webView.canGoBack()) {
                    cookieClear();
                    webView.clearCache(true);
                    airplaneMode();
                    oneStepCount = 0;
                    twoStepCount = 0;
                    Toast.makeText(MainActivity.this, "End one cycle", Toast.LENGTH_SHORT).show();
                }

                if(oneStepCount == 0 && twoStepCount == 0 && !stop) {
                    searchAct();
                }
            } else {
                searchAct();
            }
        }
    }

감사합니다!!

우랴 (3,680 포인트) 님이 2017년 7월 7일 질문

1개의 답변

0 추천
webview client에서 여러번 호출되는것은 다른사이트를 많이 테스트 해보시면

한번만 호출되는것도 있고 여러번 호출되는것도 있을겁니다. 그건 웹뷰클라이언트가 문제가 있어서 그런게 아니라

웹사이트에서 redirection처리되어 다른 url로 이동시키기 때문입니다. 웹을 컨트롤 할수 없을 경우에는

onPageFinish가 여러번불리는걸 막기는 불가능해요.

그래서 떠도는 소스가 여러번호출되지만 마지막만 체크하겠다는거고

구글에 있는 소스를 적용해서 end of cycle 메시지가 단 한번만 뜬다면

그 부분이 로딩이 전부 다됐을때 호출됐다는 의미니까 해당부분에 기능을 구현하면됩니다.
라쎄린드 (25,460 포인트) 님이 2017년 7월 7일 답변
...