Android 4대 컴포넌트

2023. 8. 29. 09:46·Android
728x90

1. Activity(액티비티)

  • UI 화면(사용자와 상호작용)을 담당하는 컴포넌트
  • 액티비티 역할을 하기 위해서는 자바소스에서 Activity클래스를 상속해야 하며 액티비티가 기본적으로 가지고 있는 생명주기 메소드를 재정의하여 원하는 기능을 구현하는 방식으로 제작합니다.
  • 특징
    - 안드로이드 어플리케이션은 반드시 하나 이상의 Activity를 가지고 있어야 합니다.
    - 두개의 액티비티를 동시에 Display할 수 없습니다.
    - 다른 어플리케이션의 액티비티도 불러낼 수 있습니다.
    - 액티비티 내에는 프래그먼트(Fragment)를 추가하여 화면을 분할시킬 수 있습니다.
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

 

2. Service(서비스)

  • 백그라운드에서 실행되는 프로세스
  • 눈에 보이지 않는 곳에서 작업을 처리하기 때문에 별도의 스레드(Thread)에서 동작한다고 오해하는 경우가 많습니다. 하지만 서비스는 엄연히 메인 스레드에서 동작합니다.
  • 특징
    - 네트워크(Network)와 연동이 가능합니다.
    - 별도의 UI를 가지지 않으며 백그라운드에서 수행됩니다.
    - 액티비티와 서비스는 UI스레드라고 불리는 동일한 애플리케이션 스레드로 실행됩니다.
    - 애플리케이션이 종료되어도 이미 시작이 된 서비스(Service)는 백그라운드(Background)에서 계속 동작합니다.
    - 모든 서비스는 Service클래스를 상속받아서 사용합니다.
  • 예시
    안드로이드 모바일에서는 애플리케이션을 사용하면서 유튜브 또는 멜론, 지니 등등 음원 스트리밍 앱을 사용한다던지 다른 작업을 하면서 파일을 다운로드할 때 서비스를 주로 사용합니다.

3. Broadcast Recevier(방송 수신자)

  • 안드로이드 OS에서 발생하는 다양한 이벤트와 정보를 받아 핸들링하는 컴포넌트
  • 브로드캐스팅은 메시지를 여러 객체에게 전달하는 방법을 의미하는데 이렇게 전달되는 브로드캐스팅 메시지를 방송수신자라는 어플리케이션의 구성요소를 이용해 받을 수 있습니다.
  • 특징
    - 디바이스에서 발생하는 일 중에서 어플리케이션이 알아야 하는 상황이 발생하면 알려줍니다.
    - 수신기를 통해 디바이스의 상황을 감지하고 적절한 작업을 수행합니다.
    - 대부분 UI가 존재하지 않습니다.
  • 예시
    사용자 안드로이드 디바이스의 시스템 부팅시 앱 초기화, 네트워크 끊김 등등 특수한 이벤트에 대한 처리 혹은 배터리 부족 알림, 문자 수신과 같은 정보를 받아 처리를 해야 할 필요가 있을 때 동작합니다.

    즉, 안드로이드 OS에서 메신저앱 또는 문자 메시지가 오면 모든 앱에 "메시지가 왔다"라는 하나의 정보를 방송(BroadCast)을 합니다.
    이 메시지를 받기 위해 브로드캐스트 리시버를 구현하면 되며 해당 정보가 오면 특정 이벤트를 처리할 수가 있습니다.

4. Content Provider(콘텐트 제공자)

  • 데이터를 관리하고 다른 어플리케이션 데이터를 제공해주는 컴포넌트
  • 특정한 애플리케이션이 사용하고 있는 데이터베이스(DB)를 공유하기 위해 사용
  • 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공
  • 특징
    - 파일 입출력, SQLiteDB, Web등을 통해서 데이터를 관리합니다.
    - 외부 애플리케이션이 현재 실행 중인 애플리케이션 내에 있는 데이터베이스(DB)에 함부로 접근하지 못하게 할 수 있으면서 나 자신이 공개하고 공유하고 싶은 데이터만 공유할 수 있도록 도와줍니다.
    -  작은 데이터들은 인텐트(Intent)로 애플리케이션끼리 데이터를 서로 공유가 가능하지만 콘텐 프로바이더는 음악 또는 사진 파일 등과 같이 용량이 큰 데이터들을 공유하는데 적합합니다.
    - 프로바이더는 데이터의 Read(읽기), Write(쓰기)에 대한 퍼미션이 있어야 애플리케이션에 접근이 가능합니다.
    - 데이터베이스에서 흔히 사용되는 CURD(Create, Read, Update, Delete) 원칙을 준수합니다.

인텐트(Intent)

  • 애플리케이션 컴포넌트(구성요소) 간에 작업 수행을 위한 정보를 전달하는 역할을 하며 통신수단
  • 컴포넌트 A가 컴포넌트 B를 호출할 때 필요한 정보를 가지고 있으며, 이 정보에는 호출 대상이 되는 컴포넌트 B의 이름이 명시적으로 표시가 됨과 동시에 속성(Attribute)들이 암시적으로 표시되기도 합니다.
    그리고 호출된 컴포넌트 B가 호출한 컴포넌트 A로 어떠한 결과를 전달할 때도 인텐트가 사용이 됩니다.
  • 특징
    - 서로 독립적으로 동작하는 4가지 컴포넌트들 간의 상호 통신을 위한 장치입니다.
    - 컴포넌트에 액션(Action), 데이터(Data) 등을 전달합니다.
    - 인텐트를 통하여 다른 애플리케이션의 컴포넌트를 활성화시킬 수 있습니다.
  • 예시
    액티비티 간의 화면 전환(이동)
728x90
LIST

'Android' 카테고리의 다른 글

Android - Garbage Collection(GC)  (2) 2023.11.08
Android - Manifest & Components  (3) 2023.11.08
Android Layout  (1) 2023.09.04
안드로이드 Activity 생명주기  (1) 2023.08.29
Android 기초  (0) 2023.08.29
'Android' 카테고리의 다른 글
  • Android - Manifest & Components
  • Android Layout
  • 안드로이드 Activity 생명주기
  • Android 기초
Mr. Joo
Mr. Joo
  • Mr. Joo
    삽질의 시작
    Mr. Joo
  • 전체
    오늘
    어제
    • 분류 전체보기 (210) N
      • Flutter (70)
      • Android (9)
      • Swift (4)
      • React (11)
      • 인공지능 (4)
      • CS (10)
      • 개발 뉴스 (99) N
      • IT 기기 (1)
      • 알면 유용한 정보 (2)
  • 인기 글

  • 태그

    플러터
    오늘의 뉴스
    뉴스 모음
    개발 이슈
    DART
    Flutter
    기술 뉴스
    앱
    개발 뉴스
    오늘의 개발 뉴스
    앱 개발
    앱개발
    개발
    뉴스
    오늘의 이슈
    Dart 기초
    react
    기술
    오늘의 기술 뉴스
    이슈
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Mr. Joo
Android 4대 컴포넌트
상단으로

티스토리툴바