안드로이드의 4대 컴포넌트는 액티비티, 서비스, 콘텐트제공자, 방송수신자 이렇게 4가지를 말합니다. 어플리케이션을 만들때 주요 구성요소이자 안드로이드의 사실상의 모든 구성요소입니다. 각각의 구성요소는 인텐트를 통해서 상호 통신을 합니다. 즉 액티비티에서 다른 구성요소를 호출할때는 인텐트를 거쳐야 한다는 것입니다.
Activity(액티비티)
액티비티는 UI 화면을 담당하는 컴포넌트입니다. 액티비티 역할을 하기 위해서는 자바소스에서 Activity클래스를 상속해야 하며 액티비티가 기본적으로 가지고 있는 생명주기 메소드를 재정의하여 원하는 기능을 구현하는 방식으로 제작합니다. 가장 많이 쓰이는 컴포넌트 이기때문에 굉장히 중요하다고 볼 수 있습니다.
Activity(액티비티)의 특징
1. 안드로이드 어플리케이션은 반드시 하나이상의 Activity를 가지고 있어야 합니다.
2. 두개의 액티비티를 동시에 Display할 수 없습니다.
3. 다른 어플리케이션의 액티비티도 불러낼 수 있습니다.
4. 액티비티 내에는 프래그먼트(Fragment)를 추가하여 화면을 분할시킬 수 있습니다.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
굉장히 익숙하신 코드죠? 이게 바로 액티비티입니다.
2. Service(서비스)
서비스는 백그라운드에서 실행되는 프로세스를 의미합니다. 서비스는 화면이 존재하지 않습니다. 하지만 서비스도 애플리케이션의 구성요소이므로 새로 만든 후에는 항상 매니페스트에 등록을 해주어야 합니다. 메인 액티비티에서 서비스를 시작하고 싶은 경우에는 startService()라는 메서드를 이용해 서비스를 실행시킬 수 있습니다.
Service(서비스)의 특징
1. 화면이 없습니다. 그저 백그라운드에서 돌아가는 컴포넌트입니다.
2. 한번 시작된 서비스는 어플리케이션이 종료되도 계속해서 백그라운드에서 돌아갑니다.
3. 모든 서비스는 Service클래스를 상속받아서 사용합니다.
4. 네트워크를 통해서 데이터를 가져올 수 있습니다.
3. Content Provider(콘텐트 제공자)
콘텐트 제공자는 데이터를 관리하고 다른 어플리케이션 데이터를 제공해주는 컴포넌트입니다. 데이터베이스의 데이터를 전달할때 많이 사용합니다. 콘텐트 제공자는 생명주기를 가지고 있지 않습니다.
Content Provider(콘텐트 제공자)의 특징
1. 파일입출력, SQLiteDB, Web등을 통해서 데이터를 관리합니다.
2. 콘텐트 제공자를 통하여 다른 어플리케이션의 데이터도 변경할 수 있습니다.
4. Broadcast Recevier(방송 수신자)
방송 수신자란 안드로이드에서 다양한 이벤트와 정보를 받아 반응하는 컴포넌트입니다. 브로드캐스팅은 메시지를 여러 객체에게 전달하는 방법을 의미하는데 이렇게 전달되는 브로드캐스팅 메시지를 방송수신자라는 어플리케이션의 구성요소를 이용해 받을 수 있습니다.
Broadcast Recevier(방송수신자)의 특징
1. 디바이스에서 발생하는 일 중에서 어플리케이션이 알아야 하는 상황이 발생하면 알려줍니다.
2. 수신기를 통해 디바이스의 상황을 감지하고 적절한 작업을 수행합니다.
3. 대부분 UI가 존재하지 않습니다.
// 추가
1. Activity - 화면 UI를 구성하는 View를 담을 수 있는 그릇이라고 생각하시면 됩니다. 모든 화면이 있는
어플리케이션이라면 Activity가 존재하며 Activity가 존재해야만 화면 구성을 할 수가 있습니다.
Activity를 사용하기 위해서는 manifest.xml 파일에 등록을 해야하고 Activity 생명주기를
잘 이해하셔야 합니다. 다음 포스팅에서 Activity 생명주기에 대해 설명 드리겠습니다.
2. Service - Service는 백그라운드에서 실행되는 컴포넌트로 눈에 보이지는 않지만 오랜동안 실행되는 작업이나
원격 프로세스를 위한 작업을 할 때 사용합니다. 앞서 보이지 않다고 말씀드렸듯이 사용자 인터페이스를
제공하지 않습니다. 또한 사용자가 다른 어플리케이션으로 전환하더라도 백그라운드에서 계속해서 실행합니다.
예를 들면 스마트폰으로 음악을 들을 때 보통 앱을 켜고 음악을 선택해 플레이 시킨 다음 다른 앱을 켜도
노래가 계속 흘러나오는 것이 바로 Service를 활용하여 음악 플레이 하는 부분을 구현 한 것입니다.
Activity와 마찬가지로 사용하기 위해서는 manifest.xml 파일에 등록을 해야하고
Activity와 연동 된 수명주기를 잘 이해하셔야 합니다.
3. Broadcast Receive - Broadcast Receive는 안드로이드 단말기에서 발생하는 다양한 이벤트나 정보를 받고
정보에 따라 반응하는 컴포넌트 입니다. 단말기에서 발생하는 일 중에서 어플리케이션이 알아야 하는
상황을 계속해서 알려주는 역할을 합니다. 예를 들면 배터리가 없거나 문자나 전화가 왔을 때
우리가 알고 싶지 않아도 알려주도록 구현되어 있는 것과 같이 Broadcast Receive를 이용해서
여러 상황을 감지하고 적절한 작업을 수행하는 역할을 합니다.
4. Content Provider - Content Provider는 어플리케이션 간 데이터를 공유하게 해주는 인터페이스입니다.
안드로이드 시스템의 각종 설정 값 이라던지 SD카드 내의 미디어 등에 접근하는 것이 가능하고,
다른 어플리케이션에 접근하는 것도 가능합니다. 물론 접근하려는 어플리케이션에서
정의한 수준의 접근만 가능하게 됩니다. 가장 쉬운 예시가 전화번호부 어플리케이션 입니다.
이 어플리케이션에 저장되어 있는 DB를 이용하여 많은 어플리케이션들이 사용하고 있습니다.
페이스북이나 카카오톡 등등 전화번호부를 확인하여 자동으로 친구추가가 되는 기능을 생각하시면
이해가 쉬울 것 같습니다. 전화번호부 어플리케이션에서 Content Provider를 제공하고
카카오톡이나 페이스북에서 Content Resolver를 가지고 제공하는 데이터를 읽어 오는 것입니다.
이와같이 Content Provider는 자신의 데이터를 제공해주는 어플리케이션에서 구현해주는
컴포넌트라고 생각하시면 됩니다.
'Tech Interview > Android' 카테고리의 다른 글
[Android] 안드로이드 생명주기(Life cycle)에 대해 설명하시오. (0) | 2018.11.22 |
---|---|
[Android] 액티비티(activity) 생명주기에 대해서 설명하시오. (0) | 2018.11.22 |
[Android] 안드로이드에서 다국어 지원을 위해 해야할 작업에 대해서 설명하시오. (0) | 2018.11.22 |
[Android] 안드로이드 프로젝트 구성요소에 대해서 설명하시오. (0) | 2018.11.22 |
[Android] 안드로이드의 실행환경에 대해서 설명하시오. (0) | 2018.11.22 |