안녕하세요.

혼자 열심히 고민하다 영, 답도 안나오고 더 시도해볼만한 꺼리도 떨어지고 원인은 영 찾을수가 없어서 여기에 문의드립니다.

 

현재 안드로이드 webview 를 이용하여 하이브리드 앱을 만들고 있는데요.

웹페이지를 하나 loadUrl() 을 사용하여 로딩하고 여기서 페이지 이동을 하도록 앱+웹페이지를 제작중에 있습니다.

 

그런데, 항상 그런건 아니고, 불규칙적으로 발생을 하는 문제가 하나 있는데요.

사용자가 웹페이지의 버튼을 눌러서 페이지 이동을 하면 보통 2초~5초 사이에 페이지 이동이 완료가 되는데

종종 아무 동작을 하지 않는 상태가 되어버립니다.

 

처음에는 서버쪽에서 페이지 로딩이 늦어지는 구간이 있나보다.. 했는데,

로그를 찍어보니 WebViewClient  class 의 onPageStarted() 함수는 호출이 되었는데,

그 이후로는 단말에서 뭔가 진행중이라는 로그가 나오지를 않습니다.

이렇게 응답이 없을 때, 서버쪽의 access log 를 보면 전혀 request 가 들어오지를 않고 있구요.


이러다가 약 2분정도 후에 정상적으로 페이지 이동을 해버립니다...

(20초도 아니고 2분....ㅜ.ㅜ)


정상적인 케이스일때는 호출순서가 


WebViewClient.java:119:onPageStarted()

WebChromeClient.java:47:onProgressChanged() 10

WebChromeClient.java:56:onReceivedTitle()

WebChromeClient.java:47:onProgressChanged() 30

WebChromeClient.java:47:onProgressChanged() 36

WebChromeClient.java:47:onProgressChanged() 43

WebChromeClient.java:47:onProgressChanged() 48

WebViewClient.java:129:onPageFinished()

WebChromeClient.java:47:onProgressChanged() 100


이런식인데


멈추는 경우는


WebViewClient.java:119:onPageStarted()

WebChromeClient.java:47:onProgressChanged() 10


두줄만 찍고 멈춰버립니다. 


 

해당 웹페이지를 pc 의 크롬으로 로딩했을때는 이런 문제는 발생하지 않습니다.

뭔가 webview 의 로직을 제대로 이해하지 못하는 부분이 있는건지...


혹시 개발자분들중에 팁이나 다른 시도할만한 의견 있으신분 도움 부탁드립니다...



아. 또 한가지 질문이 있습니다. 

이렇게 멈춰버리는 경우, 초기화면으로 돌아가서 다시 loadUrl() 을 호출해도 페이지가 로딩되지 않습니다. 

그 2분동안 아무 동작을 못하는거지요. 

근데 해당 서버에 접근하는 제 2의 앱을 띄우면 접근 잘 하는걸로 봐서는 서버쪽에서 응답을 못하는건 아닌거 같습니다. 


앱을 완전히 종료하지 않으면 웹뷰가 타이머 걸어놓는다던지 해서 계속 뭔가 대기중인상태가 되어서 그런거같은데요, 

혹시 사용자가 이렇게 늦어지는 경우에, 재시도를 하게 되면

웹뷰 상태같은걸 초기상태로 돌릴 수 있는 방법이 있을까요? 


도움 부탁드립니다... (ㅜㅜ)(__)(ㅜㅜ)