(안드로이드) ViewBinding

차누·2023년 3월 7일
0

ViewBinding 정의

Activity, Fragment와 같은 뷰와 상호작용할 때 findViewById 대신 쉽게 뷰와 연결을 할 수 있도록 지원해주는 기능을 말합니다.

1.1 ViewBinding을 사용하는 이유

기존의 findViewById의 단점을 보완하기 위해서 나온 개념인 ViewBinding이다.
안드로이드 3.6버전이상 사용이 가능하고 복잡한 UI일수록 쉽게 사용할 수 있다는 장점이 있다.

build.gradle(app)


    buildFeatures {
        viewBinding true
    }

1.2 findViewById의 문제점

기본적으로 findViewById는 뷰의 id값을 이용해 뷰와 연결을 해주는 메소드로 액티비티, 프래그먼트, 뷰홀더 등 다양하게 사용해왔다. 하지만 findViewById 메소드의 단점이 있는데

1.느리다.
findViewById 메소드가 호출이 되면 View를 상속받은 ViewGroup의 findViewTraversal 메소드를 호출하여 최상위 뷰에서 원하는 뷰의 id값이 현재 뷰의 id값과 같은가를 확인하고 findViewById를 사용하여 연결한다. 결국 ViewGroup 밑에 있는 모든 뷰를 전부 한번씩 순회하여 id값을 비교하기 때문에 작업량이 많아지고 느려질 수가 있다.

2.null-safe
레이아웃과 잘못된 뷰와 id값을 연결할 경우 데이터를 받아왔을때 Null Pointer Exception이 발생할 수도 있다.

1.3 이를 보완하기 위해 ViewBinding

모든 뷰에서 id값을 비교하여 id값을 찾는 단점을 보완하고자 원하는 뷰의 컴포넌트를 바로 연결하여 사용하므로 속도가 빠르다는 장점이 있고 또한 뷰와 관련된 레이아웃만 접근하므로 null값에 대한 위험성이 줄어든다는 장점이 있습니다.

참고문헌
https://roomedia.tistory.com/entry/View-Binding-findViewById-%EB%8C%80%EC%B2%B4%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-View-Binding%EA%B3%BC-Data-Binding-%EC%B0%A8%EC%9D%B4

https://velog.io/@eoqkrskfk94/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-View-Binding

https://math-coding.tistory.com/253

https://prod.velog.io/@dev_dejavu/android-View-binding%EA%B3%BC-Data-binding-%EB%B9%84%EA%B5%90

https://holika.tistory.com/86

profile
to be good programmer

0개의 댓글