본문 바로가기
Android Q&A/Android One a day

[안드로이드 면접] - 22 :

by Jman 2023. 2. 28.

1. 네이비게이션의 3대 컴포넌트는?

더보기

Navigation graph

: 네비게이션 에디터를 사용하거나, xml 을 직접 수정함으로써 앱에서 사용할 모든 화면과 연관관계 이동 방법을 정의할 수 있다.

 

Navigation host

: 네비게이션 그래프에서 정의한 프래그먼트를 표시하는 컨테이너다. 컨테이너 뷰를 추가하면 된다.

 

Navigation controller

: 화면 전환을 수행하는 컨트롤러다. 프래그먼트를 전환하기 위해서는 호스트로부터 컨트롤러 인스턴스를 얻어서 네비게이션을 실행하게 된다.

 

 

2. Safe Args 에 대해서 설명하시오.

더보기

네비게이션 라이브러리를 통해 프래그먼트 간의 데이터 통신을 쉽게할 수 있다.
보통 key-value 타입에 번들을 사용한다. 번들은 타입 안정성을 보장하지 않지만,
Safe Args 로 만들면, 안정하게 데이터 전달이 가능하다.

세 개의 클래스가 만들어진다
1. 내비게이션의 action 이 시작되는 대상의 이름에 Directions 라는 접미어가 붙은 클래스.
2. argument 를 전달하는데 사용한 action 의 이름과 동일한 이름의 클래스.
3. 데이터 수신하는 대상의 이름에 Args 라는 접미어가 붙은 클래스.

 

3. Observable VS LiveData

더보기

Observable 은 라이프사이클을 모르기 때문에, 등록한 콜백이 상시 작동되어야 한다.

Observe 해제가 필요하다면, removeOnPropertyChangedCallback 을 호출하여 콜백을 수동으로 직접 제거해야 함.

하지만, LiveData는 `STARTED` 또는 `RESUMED` 로 활성화 상태일 때만, 관찰을 수행하고, 나머지 상태에는 자동으로 비활상화 된다.

따라서 LiveData 는 불필요한 옵저빙이 사라지고, 메모리 누수 위험이 사라진다.

 

 

4. 서포트 라이브러리에 대해서 설명하시오.

더보기

Support 라이브러리는 API 하위 호환성 문제를 해결하기 위해서 만들어 졌다.

하지만, 사용하다 보니 문제점이 발생했다.

서포트 라이브러리 문제점


1.  최소지원 API 레벨 문제

: 의존성 코드 v 옆에 붙은 숫자가 최소지원 API 레벨이다. 17년 구글 I/O 에서 발표로 안드로이드 생태계를 위해서 최소지원을 API14 로 변경한다고 한다. 그래서 라이브러리 코드 v 옆에 4 또는 7이 붙어도 최소지원 API 가 14이상이여야 한다.

 

2. 필요없는 라이브러리의 추가

: 서포트 라이브리는 수 많은 API 를 통합했기 때문에 내가 사용하지 않은 API 까지 포함하게 된다. 이러한 서포트 라이브러리를 import 할 시, 낭비이다.

 

3. 버전 통일문제

: 복수 개의 서포트 라이브러리를 등록하게 된다면, 버전을 동일하게 맞춰야 한다.

 

 

 

5. 인텐트 필터란?

더보기

안드로이드 시스템 내부에서는 수 많은 앱들에 의해서 수많은 인텐트들이 발생한다.
이 중에서 자신에게 필요한 인텐트만을 받기 위해서 필요한 게, 인텐트 필터이다.

인텐트 필터는 인텐트 해석 과정이 필요한 암시적 인텐트를 받을 때 필요할 뿐,
호출 대상 컴포넌트가 명시되어 있는 명시적 인텐트는 이러한 인텐트 필터가 없어도 대상 컴포넌트를 호출할 수 있다.

💡인텐트 해석이란? 인텐트 객체 내의 여러 정보들을 바탕으로 가장 적절한 컴포넌트를 찾는 과정을 말한다.

 

 

 

 

 

 

'Android Q&A > Android One a day' 카테고리의 다른 글

[안드로이드 면접] - 24 :  (0) 2023.03.01
[안드로이드 면접] - 23 :  (0) 2023.03.01
[안드로이드 면접] - : 21  (0) 2023.02.27
[안드로이드 면접] - 20 :  (0) 2023.02.24
[안드로이드 면접] - 19 :  (0) 2023.02.24