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()
    }

});

댓글 없음:

댓글 쓰기

Jetpack Compose Composable의 Lifecycle

  이 페이지에서는 컴포저블의 수명 주기에 관해 알아보며 Compose에서 컴포저블에 재구성이 필요한지를 결정하는 방법을 살펴봅니다. 수명 주기 개요 상태 관리 문서 에 설명된 대로 컴포지션은 앱의 UI를 설명하고 컴포저블을 실행하여 생성됩니다. 컴포...