Android WebView 타임아웃(TimeOut) 기능
Android WebView는 페이지 관련해서 타이아웃 설정이 없다
상황에 따라 bad network 상황시 WebViewClient에 타이아웃 관련 기능을 통해 사용자에게 네트워크 장애표시를 해야할 필요가 있었다.
다음의 동작으로 간략한 webview에 타임아웃 기능을 구현해 보았다.
mWebView.setWebViewClient(new WebViewClient() {
private val loadingTimeOut = 1000 * 10
private var timeout = false
//페이지 타임아웃 타이머
private val pageTimeoutTimer: CountDownTimer = object : CountDownTimer(loadingTimeOut.toLong(), 1000) {
override fun onTick(millisUntilFinished: Long) {
}
override fun onFinish() {
Log.d("pageTimeoutTimer onFinish")
if (timeout) {
//네트워크 장애관련 페이지 노출
Log.d("onPageStarted networkFailActivityForError")
}
pageFinishDone()
}
}
//페이지 완료 처리
private fun pageFinishDone() {
pageTimeoutTimer.cancel()
timeout = false
dismissLoading()
}
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
Log.d("onPageStarted WebView URL : $url")
pageTimeoutTimer.cancel()
pageTimeoutTimer.start()
timeout = true
showLoading()
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
Log.d("onPageFinished WebView URL : $url")
pageFinishDone()
}
});
댓글
댓글 쓰기