2021. 11. 1. 22:30ㆍ바삭바삭 IT/안드로이드
웹뷰를 구현하기 할때 WebView객체를 만들게 되는데요, 단순히 WebView객체만 생성하면 화면만 보여질 뿐 웹뷰 속 버튼이나 다른 기능들은 동작하지 못합니다. 웹뷰 속 버튼을 앱에서 제어하기 위해 필요한 구현체들이 바로 WebViewClient와 WebChromeClient입니다.
WebViewClient와 WebChromeClient
먼저 WebViewClient와 WebChromeClient 이 둘의 차이를 알아봅시다.
WebViewClient는 웹페이지를 로딩할때 생기는 콜백함수들로 구성되어 있습니다.
반면 WebChromeClient는 웹페이지에서 일어나는 액션들에 관한 콜백함수들로 구성되어 있습니다. 예를들면 웹에서 새 창을 띄우려하거나 파일을 첨부하는 경우가 있습니다.
아래는 각 클래스에서 자주 오버라이드 하는 함수들 입니다.
WebViewClient 함수
함수명 | 반환 | 호출 시점 | 설명 |
onPageStarted | void | 페이지가 로딩되는 첫 시점에 한번 호출된다. | |
shouldOverridingUrlLoading | boolean | 웹뷰에서 url이 로딩될때 호출되어 앱에게 제어할 기회를 준다. | 앱이 url로딩을 제어할 경우 true를 반환, 그게 아니면 default로 false를 반환한다. |
onPageFinished | void | 페이지 로딩이 끝나면 호출된다. |
WebChromeClient 함수
함수명 | 반환 | 호출 시점 | 설명 |
onProgressChanged | void | 페이지가 로딩되는 중간중간 호출된다. | 현재 로딩되는 페이지의 상태를 알려준다. |
onCreateWindow | boolean | 웹에서 새 창을 열때 호출된다. | 앱이 새 창을 여는 작업을 하면 true를 반환, 그게 아니면 default로 false를 반환한다. |
onCloseWindow | void | 웹뷰가 창을 닫을 때 호출된다. |
favicon?
함수 설명을 읽다보면 매개변수에 favicon이 넘어오는 함수들이 있습니다.
favicon은 웹 브라우저 주소창에 표시되는 웹페이지를 대표하는 아이콘 입니다.
자주쓰이는 함수들
경우에 따라 자주쓰이는 함수들입니다.
경우 1) 웹에서 사용자 이벤트로 새로운 url이 로딩된다 → shouldOverrideUrlLoading()
경우 2) 웹에서 window.open으로 새탭이 열린다 → onCreateWindow()
호출 flow
위에 설명한 내용을 토대로 웹뷰의 전체적인 호출 순서를 도식화 했습니다.
모든 함수를 넣진 못했지만, 가장 많이 쓰이는 함수들로 넣었습니다.
+ 참고하면 좋은 동영상
7년전 영상이라 참고만 하시길 바랍니다 :)
https://www.youtube.com/watch?v=NiX2vh6JY6s
'바삭바삭 IT > 안드로이드' 카테고리의 다른 글
gRPC란 무엇인가 (2) | 2023.11.26 |
---|---|
단방향 데이터 흐름의 이해 (0) | 2021.11.21 |
[안드로이드] 저장소 사용하기 - 2. Scoped Storage (0) | 2021.02.24 |
[안드로이드] 저장소 사용하기 - 1. Legacy Storage (1) | 2021.02.23 |
[ACC] 데이터 바인딩 기초 (0) | 2021.02.14 |