inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

냉동코더의 알기 쉬운 Modern Android Development 입문

ViewBinding 기초

Fragment에서의 viewBinding

516

한석민

작성한 질문수 20

0

[ViewBinding 기초] 부분을 듣고 있습니다.

Fragment()에서는 binding을 getter를 따로 만들고 사용하셨는데, 이렇게 사용하지 않고

그냥 private var binding : FragmentFirstBinding? = null

이라고 선언하고 onDestroyView에서

binding = null 이라고 선언해주는 것과 강의에서 보여주신 방법과 차이가 무엇인가용?

android kotlin 아키텍처 jetpack

답변 3

1

한석민

감사합니다

1

냉동코더

변수 뒤에 get()을 붙이면 이 변수에 접근할 때마다 할당이 일어나고, get() 없는 단순 정의라면 클래스가 인스턴스화 될 때 한 번만 할당을 하게 됩니다. 프래그먼트가 라이프사이클에 따라 파괴되지 않는 경우에도 상황 변화에 따라 계속 값을 갱신해주기 위해서 get()을 쓰는 것입니다.

0

yeongjae oh

저도 석민님과 같은 생각을 하게되었는데 냉동코더님의 답변에 대해 제가 직접 확인해볼 방법이 있을까요? 어떤 의도인지는 알겠지만 직접 코드로 확인해보고싶습니다.

0

냉동코더

좀 설명이 부족했던 것 같습니다. 여기서 getter를 사용하는 가장 큰 이유중의 하나는 binding에 값이 정확히 세트되어 null이 아니라는 것을 보장받기 위한 것이고, 두 번째는 var 변수를 val로 변환함으로써 immutable로 만들어 외부에서 변형하지 못하게 하는 효과를 얻는 것입니다. getter를 생략하면 코드상에서 초기화를 잘못 수행했거나 혹은 앱 내의 알 수 없는 타이밍 이슈 등에 의해 null인 상태로 변수를 사용하여 문제가 발생할 수 있습니다.

fragment를 초기화하는 더 세련된 방법에는 여러가지 토론이 있긴 한데 개인적으로는 getter를 생략하는 것이 아닌 delegate를 사용하는 방법이 좋아보입니다. 저의 다음 블로그 글을 참고해 보세요.

https://cliearl.github.io/posts/android/prevent-fragment-memory-leak-during-viewbinding/

Coroutine, Flow 질문

0

384

1

Transformations import 안됨

0

575

1

moshi관련 질문입니다.

0

545

2

searchBooks() 에서 북 검색 입력을 너무 빨리 할 경우 마지막 글자로 검색이 안돼요.

0

359

1

안드로이드에서 아키텍처 패턴

0

408

1

RecyclerView.Adapter vs ListAdpater

0

463

1

Flows 와 Coroutine

1

558

1

[BookSearchAdapter] onBindViewHolder의 currentList[position] 질문

0

360

1

코루틴 메모리 관련해서 질문드립니다!

0

444

1

Java Bill Pugh Solution 에서 INSTANCE

0

461

1

nested json에서 특정 부분만 파싱하는법

0

490

1

toolbar 질문드립니다.

0

407

2

EditText 에서 delay 주셔서 처리하셨는데 flow 의 debounce() 하고 같은건가요?

2

564

1

코루틴 관련 질문

0

541

1

오류

1

491

2

강사님! 직렬화 라이브러리를 Moshi, kotlin serialization 두개를 사용하시던데 이유가 있으신가요?

1

742

1

EditText 는 kill 해도 값이 잘 저장되어있던데 혹시 제가 잘못테스트했을까요?

1

345

1

서버도 페이징 기능이 되는데 Paging 라이브러리가 필요할까요?

1

523

1

GSON 이 아닌 Moshi 를 사용하시는 이유가 있을까요?

1

1265

1

EditText 는 액티비티가 재생성되어도 값이 남아있던데 이유가 궁금해요

1

494

1

ViewModel 생성시 왜 초기값을 받지 않도록 했을까요?

1

434

1

Room DB에 id 항목 추가

0

248

1

안녕하세요. 용어에 대해 질문이 있어 글 남깁니다.

0

402

2

paging config pageSize 관련

0

427

1