안드로이드/면접질문

안드로이드 면접 질문 #2

dev phoebe 2019. 4. 23. 22:13

https://github.com/MindorksOpenSource/android-interview-questions#core-android 해당 사이트를 바탕으로 작성하였습니다.


Android 4대 Component에 대해 간략히 설명하시오.


  • 액티비티

    액티비티는 사용자 인터페이스가 있는 단일화면을 나타낸다. 하나 이상의 view를 가질 수 있다. 다른 어플리케이션의 액티비티에 접근하는 것도 가능하다.

  • 서비스

    서비스는 백그라운드에서 실행되는 컴포넌트이다. 보통 오랜 시간이 걸리는 작업, 원격 프로세스를 위한 작업, 계속 실행해야하는 작업을 할 때 사용 된다.

    한번 시작된 서비스는 어플리케이션이 종료되어도 백그라운드에서 실행된다.

  • 브로드캐스트 리시버

    브로드캐스트 수신자는 안드로이드에서 디바이스에서 발생하는 이벤트 및 정보를 받을 수 있게 하는 컴포넌트이다. 전화 및 수신, 네트워크 끊김과 같은 정보를 안드로이드 OS에서 어플리케이션으로 방송해주는데, 이를 받기 위해 사용된다.

  • 콘텐트 프로바이더

    콘텐트 프로바이더는 데이터를 관리하고, 다른 어플리케이션의 데이터를 받을 수 있는 컴포넌트이다.

    파일 입출력, SQLite, DB, Web등을 통하여 데이터를 관리 할 수 있다. 어플리케이션 계층과 데이터 계층을 분리하여 중간 가교 역할을 담당한다. 어플리케이션은 콘텐트 프로바이더에 접근하면, 필요한 데이터를 얻어 올 수 있다.


Android Application의 구조?


  • manifest

    안드로이드 어플리케이션을 구동하는데 필요한 설정값을 관리해주는 곳이다.

  • java

    클래스들을 관리하는 폴더이다.

  • res

    UI와 관련된 파일과 디자인 리소스 문자열 리소스를 담고 있는 폴더이다.

    • drawable : 이미지 파일 저장

    • mipmap : 아이콘 이미지 저장

    • value : 문자열, 색상값, 수치값, 스타일 저장

  • gradle

    build tool 이다. 안드로이드 스튜디오는 코드 편집만을 담당할 뿐, 빌드는 Gradle을 통해 모두 수행 된다.

  • 참고

    https://codeasy.tistory.com/6


Context란?


어플리케이션 환경에 관한 글로벌 정보를 접근하기 위한 인터페이스. Abstract 클래스이며 실재 구현은 안드로이드 시스템에 의해 제공된다. Context 를 통해, 어플리케이션에 특화된 리소스나 클래스에 접근할 수 있을 뿐만 아니라, 추가적으로, 어플리케이션 레벨의 작업 - Activity 실행, Intent 브로드캐스팅, Intent 수신 등, 을 수행하기 위한 API 를 호출 할 수도 있다.

컨텍스트의 종류에는 2가지가 있다.

  • Application Context

    실행 중인 안드로이드 어플리케이션의 Singleton Instance이다.

  • Activity/Service Context

    Activity와 Service는 보인 그자체가 Context이다. Activity와 Service 모두 ContextWrapper를 상속 받는다. Activity Context인 경우 자신의 뷰 컴포넌트를 관리하기 위해 Application Context가 아닌, 자신의 Activity Context에 접근해야 한다. "this" 키워드를 이용해서 가능하다.

  • 참고

    https://blog.hanumoka.net/2017/10/11/android-20171011-android-context/


AndroidManifest.xml 이란?


AndroidManifest.xml은 안드로이드 어플리케이션에 대한 각종 정보를 기술한 어플리케이션 명세서 라고 할 수 있다. AndroidManifest.xml에 기술되는 내용은 다음과 같다.

  • 안드로이드 어플리케이션을 위한 자바 패키지명 정의 이 패키지 명은 전체 시스템 상으로 유일 해야한다.

  • 안드로이드 어플리케이션을 구성하는 컴포넌트들 (Activity, Service, Broadcast Receiver, Content Provider)을 기술 해야 한다.

    <activity>, <service>, <receiver>,<provider>

  • 어플리케이션을 구성하는 컴포넌트들에 대한 해당 클래스명을 정의하고, 그 컴포넌트가 처리할 수 있는 기능이 무엇인지 intent-filler을 통해 정의 한다.

    <intent-filter>

  • 안드로이드 어플리케이션이 안드로이드 플랫폼의 제한된 API에 접근하거나 다른 어플리케이션의 제한된 컴포넌트를 사용하기 위해서 필요한 권한을 설정한다.

    <uses-permission>

  • 안드로이드 어플리케이션은 자신의 Component를 쉽게 사용할 수 없도록 권한을 설정할 수 있다.

    <permission>

  • 안드로이드 어플리케이션을 구동하기 위한 최소한의 sdk버전을 정의

    <uses-sdk>

  • 안드로이드 어플리케이션이 사용하는 다른 추가적인 라이브러리들을 정의

    <uses-library>

  • 참고

    https://hyeonstorage.tistory.com/151

    https://developer.android.com/guide/topics/manifest/manifest-intro


Application 클래스 란?


안드로이드에서 Application Class란 어플리케이션 컴포넌트들 사이에서 공동으로 멤버들을 사용할 수 있게 해주는 편리한 공유 클래스이다. 어플리케이션 사이의 컴포넌트들이 공동으로 사용할 수 있기 때문에 공통되게 사용하는 내용을 작성해주면 어디서든 context를 이용한 접근이 가능하다.

사용방법은 아래와 같다.

  1. Application class를 상속받는다.

  2. AndroidManifest.xml에 Applicatgion Class Name을 추가한다.

  3. 어플리케이션 내의 컴포넌트들 사이에서 context를 이용한 접근이 가능하다. (데이터 공유)