inflearn logo
강의

Course

Instructor

[Intermediate] Friendly Introduction to JETPACK <Part 1> (Android Kotlin)

DataBinding

Fragment에서 ViewBinding과 DataBinding 초기화 차이가 궁금합니다.

282

dbsrjsdlf

4 asked

0

segaweg.PNGsegaweff.PNG

ViewBinding과 DataBinding 각 강의에서 fragment에 binding을 초기화해주는 부분에 차이가 있습니다.

 

ViewBinding의 경우에는 fragment의 생명주기로 인한 메모리 누수 방지를 위해 onDestroyView에서 binding = null 처리를 해주기 위해 _binding, binding을 따로 선언해주는 것으로 알고 있는데요.

 

DataBinding의 경우는 ViewBinding과는 또 다른것인지요?

아니면 DataBinding의 경우 역시

private var _binding: FragmentTestBinding? = null

private val binding get() = _binding

으로 초기화를 해주는 것이 메모리 누수 예방을 위해 더 좋은 것인지 궁금합니다.

android kotlin jetpack

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

님의 질문에 대해 설명드리겠습니다. ViewBinding과 DataBinding 모두 안드로이드 애플리케이션 개발에서 뷰의 직접적인 참조를 보다 쉽게 관리할 수 있도록 해주는 도구입니다. 두 방식 모두 뷰 바인딩을 사용하여 타입 안정성을 제공하고 XML 레이아웃 파일과 코드 간의 연결을 강화해줍니다.

ViewBinding의 경우, fragment의 생명주기에 따라 메모리 누수를 방지하기 위해 onDestroyView에서 _binding을 null 처리하는 것이 일반적인 패턴입니다. 이로써 뷰 바인딩 객체가 fragment의 뷰보다 오래 살아남아 메모리를 차지하는 것을 방지할 수 있습니다. 다음과 같은 방법으로 구현됩니다:

private var _binding: FragmentTestBinding? = null
private val binding get() = _binding!!

DataBinding의 경우도 기본적으로는 메모리 누수 방지를 위해 비슷한 접근 방식을 사용할 수 있습니다. DataBinding은 ViewBinding보다 더 많은 기능을 제공하며, 데이터 바인딩 라이브러리를 사용하여 UI 컴포넌트를 앱의 데이터 소스와 자동으로 연결할 수 있습니다. 메모리 누수 방지를 위해 DataBinding을 사용하는 fragment에서도 다음과 같이 _binding 변수의 초기화 및 해제를 관리할 수 있습니다:

private var _binding: FragmentTestBinding? = null
private val binding get() = _binding!!

그리고 onDestroyView에서 _binding을 null로 설정하여 참조를 해제합니다. 이러한 방식은 ViewBinding과 DataBinding 모두에서 fragment의 생명주기를 따라 안전하게 리소스를 관리하고 메모리 누수를 방지하는 데 도움이 됩니다.

결론적으로, DataBinding에서도 ViewBinding과 유사하게 메모리 누수 방지를 위해 바인딩 객체의 초기화 및 해제를 신경 써야 합니다.

dataBinding 시 오류

0

66

2

Retrfit 에러

0

146

2

[Retrofit 간단한 예제 변경 + RecyclerView 추가] 에 databinding 추가해 보았습니다.

1

218

2

Navigation Data Transfer Safe Args 강의중에서

0

267

2

viewModel 초기화 관련 질문드려요

0

283

1

최상단 변수 선언 관련하여 질문드려요

0

190

1

Retrofit + ViewModelScope + RecyclerView + Glide 강의중에서

0

321

2

Retrofit 간단한 예제 변경 강의중에서

0

302

2

LiveData 와 MutableLiveData 차이강의중에서

0

502

5

Activity/Fragment ViewModel 공유 10분35초경에 fragment 에 viewModel선언

0

221

1

안드로이드 테마 색상 오류

0

245

1

Map / SwitchMap - 2 강의 오류

0

386

1

에러

0

351

1

ViewBinding 질문 있습니다.

2

386

2

fragment 이동시 data 초기화

0

391

1

CoroutineScope 질문

0

371

1

뷰모델 질문

0

308

1

바인딩 때 xml

0

289

1

코루틴과 workmanager 순서 정하기의 차이점

0

521

1

ViewModel 값

0

296

1

Retrofit 질문입니다.

0

491

1

Activity / Fragment 의 ViewMode 질문있습니다.

0

317

1

2강 질문이씁니다.

0

283

1

Json 형식 데이터 모델 설계 질문드립니다 :)

2

1518

1