<Android>ViewBindg, DataBinding 공부

진섭·2023년 8월 10일
0

Android

목록 보기
28/31
post-thumbnail

📌ViewBindg, DataBinding 이 무엇인가?

  • Binding이 들어가기 전에 findViewById를 알 필요가 있다. findViewById는 레이아웃에 있는 뷰를 리소스 id를 통해 원하는 뷰를 가져올 수 있는 메소드이다.
    그러다가 코틀린 언어를 쓰면서 kotlin-android-extensions가 쓰이기 시작했는데 kotlin-android-extensionsfindViewById와 마찬가지로 레이아웃에 있는 뷰를 리소스 id를 통해 원하는 뷰를 가져올 수 있는데 findViewById 다르게 findViewById()를 하지 않고 바로 뷰의 id를 바로 가져올 수 있어 따로 추가 코드를 작성하지 않아 코드가 간결해 집니다.
    하지만 Android Studio 4.1로 업데이트가 되면서 kotlin-android-extensions가 deprecated가 되었는데 그 이유는 실수할 여지가 매우 많다는 결론에 deprecated가 되었다고 한다. 어떤 부분에서 실수가 되는가 살펴보면 레이아웃의 갯수가 많이 없으면 상관이 없지만 갯수가 많아지면 만약 A, B 레이아웃에 똑같은 TextView에 똑같이 id를 textView라고 지정하면 코틀린 파일에서 textView를 가져오려고 하면 어떤 textView를 가져와야 하는지 혼동이 될 수 있다. 이런 부분에서 실수가 할 여지가 많다고 생각해 deprecated가 된 거 같습니다.
    최근에는 ViewBinding, DataBinding을 이용해 레이아웃에 있는 뷰를 가져오는 방식을 많이 사용합니다.그래서 ViewBinding, DataBinding이 어떤점이 차이가 있는지 블로그에 기록하려 합니다.

    참고
    https://thdev.tech/android/2020/10/07/Remove-kotlinx-synthetic/
    https://velog.io/@deepblue/Kotlin-Android-Extensions%EC%9D%B4-deprecated%EB%90%9C-%EC%9D%B4%EC%9C%A0

📌ViewBindg

  • 뜻을 살펴보면 Binding는 묶는, 결합하는 뜻을 가진다. 즉, 뷰를 묶는다, 뷰를 결합한다. 라는 뜻을 가지는 것 같다.
  • ViewBinding은 연결은 레이아웃에 존재하는 View만을 가져올 수 있다.
  • findViewBy처럼 일일이 View를 가져와 형변환해 변수에 안 넣어줘도 된다.
  • Type-Safe를 보장해 레이아웃에 있는 View를 정확한 타입을 매핑한다.
  • Null-safe를 보장한다.

    참고
    https://parkjh7764.tistory.com/150

📌DataBinding

  • 뜻이 살펴보면 마찬가지로 데이터를 묶는다, 데이터를 결합한다.라는 뜻을 가집니다.
  • 구글 문서를 찾아보면 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리라고 정의가 되어있다.
  • 주로 필수는 아니지만 MVVM 아키텍처에서 LiveData와 함께 사용된다.
  • JetPack 라이브러리 중 하나이다.
  • ViewBinding과 마찬가지로 Type-Safe, Null-safe를 보장한다.

    참고
    https://developer.android.com/topic/libraries/data-binding?hl=ko
    https://jutole.tistory.com/5

📌ViewBindg vs DataBinding

그럼 어떤 부분이 차이가 있는지 살펴보면 다음과 같은 차이가 있다고 합니다.

  • DataBindingViewBinding보다 큰 개념이여서 ViewBinding 의 기능 사용이 가능합니다.
  • 하지만 무지성 DataBinding을 사용하면 클래스 파일이 많이 생겨 빌드 속도가 느려 findViewBinding을 대체하기 위해서 사용하는 목적이라면 ViewBindng이 효율이 좋습니다.
  • ViewBinding은 레이아웃 파일의 뷰를 간단하게 접근하는 목적으로 사용이 되며, DataBinding은 레이아웃 파일과 데이터를 연결해 작업을 할 때 사용이 된다.
  • 즉, ViewBinding은 단방향바인딩, DataBinding은 양방향바인딩이다.
  • ViewBinding은 동적인 UI 콘텐츠를 생성하지 못한다.

    참고
    https://warmdeveloper.tistory.com/51
    https://velog.io/@godmin66/ViewBinding%EA%B3%BC-DataBinding
    https://jutole.tistory.com/5

출처 : https://jutole.tistory.com/5

profile
Android 개발자

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

좋은 정보 감사합니다

답글 달기