Fragment의 onCreateView()와 onViewCreated() 메서드의 호출 시점과 역할의 차이점을 설명하고, 각각 어떤 종류의 작업을 수행하는 것이 권장되는지 예시와 함께 설명해 주세요.
힌트 · onCreateView는 뷰 계층을 생성하고 반환하며, onViewCreated는 뷰가 생성된 후 초기화 작업을 수행합니다. 뷰 바인딩 및 데이터 바인딩 적용 시점을 고려하세요.
모범답안
Fragment의 onCreateView()와 onViewCreated()는 Fragment의 생명주기에서 뷰와 관련된 중요한 역할을 담당합니다.
onCreateView()는 Fragment의 뷰 계층을 생성하고 반환하는 역할을 합니다. 이 메서드 안에서 레이아웃 XML 파일을 inflate하여 뷰를 생성하고, 생성된 뷰를 Fragment에 연결합니다. 예를 들어, LayoutInflater.inflate(R.layout.my_fragment, container, false)와 같이 레이아웃을 inflate하는 코드가 주로 이 메서드 안에 위치합니다.
onViewCreated()는 onCreateView()에서 뷰가 생성된 후에 호출됩니다. 즉, 뷰가 Fragment에 연결되고, 뷰 계층이 완전히 생성된 시점입니다. 따라서 findViewById()를 사용하여 뷰의 요소들을 찾고, 초기화 작업을 수행하기에 적합합니다. 예를 들어, 텍스트뷰에 초기 텍스트를 설정하거나, 리사이클러뷰 어댑터를 설정하는 등의 작업을 onViewCreated()에서 수행합니다. 또한, 뷰 바인딩이나 데이터 바인딩을 사용하는 경우, 이 시점에서 바인딩 객체를 초기화하고 데이터를 연결하는 것이 좋습니다.
정리하자면, onCreateView()는 뷰를 "만드는" 역할, onViewCreated()는 만들어진 뷰를 "초기화하고 사용하는" 역할이라고 생각하면 이해하기 쉽습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Android / Kotlin 면접 질문
- 안드로이드 UI 구성의 기본 요소인 View와 ViewGroup의 차이점을 설명하고, 각각의 예시를 들어주세요.
- Kotlin의 Null Safety 기능은 무엇이며, 이를 위해 사용되는 '?' (nullable type)와 '!!' (non-null assertion operator)의 역할과 사용 시 주의점에 대해 설명해주세요.
- Activity의 onPause()와 onStop() 메서드는 어떤 차이가 있으며, 각각 어떤 상황에서 호출되고 어떤 작업을 수행하는 것이 적절한가요?
- Android 아키텍처 컴포넌트 중 ViewModel의 역할과 장점은 무엇이며, Activity 또는 Fragment의 생명주기와 어떻게 독립적으로 데이터를 유지할 수 있는지 설명해주세요.
- Kotlin Flow 기반의 StateFlow와 Android 아키텍처 컴포넌트의 LiveData는 각각 어떤 특징을 가지고 있으며, UI 상태 관리에 있어 어떤 상황에서 어떤 것을 사용하는 것이 더 효과적인지 비교하여 설명해주세요.
- 코틀린 코루틴에서 Dispatchers.Main, Dispatchers.IO, Dispatchers.Default의 역할과 각각 어떤 종류의 작업에 적합한지 구체적인 사용 사례와 함께 설명해주세요.