정답보다 해답을

[Android] [멋쟁이 사자처럼 앱스쿨] 안드로이드 4대 컴포넌트와 인텐트 🌐 본문

Android

[Android] [멋쟁이 사자처럼 앱스쿨] 안드로이드 4대 컴포넌트와 인텐트 🌐

스탑스톤 2024. 10. 19. 16:52

안드로이드 애플리케이션은 시스템이나 앱에 진입할 수 있는 네 가지 주요 컴포넌트로 구성됩니다.
이 구성요소들은 각각 고유한 기능을 가지고 있으며, 인텐트(Intent) 를 통해 서로 상호작용합니다.
이번 문서에서는 4대 컴포넌트와 인텐트의 정의와 어떻게 활용되는지를 목표로 합니다.

안드로이드 주요 컴포넌트와 인텐트 관계 📱

위 이미지는 안드로이드의 네 가지 주요 컴포넌트인
- 액티비티(Activity)
- 서비스(Service)
- 브로드캐스트 리시버(Broadcast Receiver)
콘텐츠 제공자(Content Provider)
 
4가지의 컴포넌트가
인텐트(Intent) 를 통해 상호작용하는 모습을 보여줍니다.

1. 인텐트(Intent) 📨

인텐트는 안드로이드 컴포넌트 간의 상호 통신을 위한 장치입니다.
인텐트를 통해 컴포넌트에 액션이나 데이터를 전달할 수 있으며, 이를 통해 다른 앱의 컴포넌트를 활성화할 수도 있습니다.

// 현재 액티비티에서 SecondActivity로 전환
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)

위와 같이 현재 화면에서 다른 화면으로 이동하는 액션을 정의할 수 있습니다.
필요하다면 데이터를 전달하는 것도 가능합니다.

2. 액티비티(Activity) 📲

  • 정의: 사용자가 상호작용하는 화면을 의미하며, 앱은 최소한 하나의 액티비티를 포함해야 합니다.
  • 특징:
    • 액티비티는 사용자와의 인터페이스를 제공하는 단일 화면입니다.
    • 인텐트를 통해 다른 액티비티를 호출할 수 있습니다.
    • 동시에 두 개 이상의 액티비티를 표시할 수는 없습니다.
    • View 또는 ViewGroup을 포함하며, 이를 통해 화면을 구성합니다.
    • 프래그먼트(Fragment) 를 사용하여 화면을 분할할 수 있습니다.
      (프래그먼트 같은 경우는 여기서 설명하지 않고 따로 설명합니다.)

A 화면에서 B 화면을 이동하고, A화면을 종료하지 않은 상태라면
A화면 위에 B 화면을 덮었다고 생각하면 됩니다.
 
이는 자료구조의 Stack 구조를 떠올릴 수 있습니다.


1번 화면이 보이다가 2번을 실행하면
1번을 덮게 됩니다.
3번 화면을 표시하면 2번도 가려집니다.
3번에서 1번으로 이동하려면 백버튼을 두 번 눌러
3 > 2 > 1 로 이동해야합니다.

 

3. 서비스(Service) 🔄

  • 정의: 사용자와 직접 상호작용하지 않고 백그라운드에서 작업을 수행하는 컴포넌트입니다.
  • 특징:
    • 타이머나 다운로드 작업처럼, 앱이 전환되더라도 백그라운드에서 계속 실행됩니다.
    • 서비스는 메인 스레드에서 동작하므로, 별도의 스레드를 사용하여 작업을 처리해야 합니다.
    • 네트워크 연동이 가능하며, 앱이 종료되더라도 이미 시작된 서비스는 계속 동작합니다.
    • 서비스는 백그라운드에서 계속 실행될 수 있지만, 배터리성능에 영향을 줄 수 있으므로, 작업이 완료되면 서비스를 중지시켜야 합니다.

타이머를 가동하고, 폰의 화면을 종료하거나 다른 앱을 실행하도 타이머는 중지하지 않는 현상을 생각하면 됩니다.
혹은 음악 플레이어를 재생하느 도중 다른 앱을 이용하는 것도 마찬가지입니다.

4. 브로드캐스트 리시버(Broadcast Receiver) 📡

  • 정의: 브로드캐스트 리시버는 안드로이드 시스템 또는 다른 앱에서 발생하는 이벤트를 감지하고 처리하는 컴포넌트입니다.
  • 특징:
    • 사용자와 직접 상호작용하지 않고, 시스템 이벤트에 반응하는 역할을 수행합니다.
    • 배터리 부족, 네트워크 상태 변경, 알람 등의 시스템 이벤트를 감지할 수 있습니다.
    • 다른 앱이나 시스템에서 발생하는 브로드캐스트를 수신하고 자동으로 작업을 처리할 수 있습니다.
    • 알림(Notification)과 같은 방식으로 사용자에게 간접적으로 정보를 제공할 수 있습니다.

5. 콘텐츠 제공자(Content Provider) 📂

  • 정의: 앱 간에 데이터를 공유할 수 있도록 해주는 컴포넌트입니다.
  • 특징:
    • 파일 시스템, SQLite 데이터베이스 등 영구 저장소에 접근할 수 있습니다.
    • 대용량 데이터를 앱 간에 공유할 때 사용됩니다.
    • URI를 통해 데이터를 요청하고 관리할 수 있습니다.

각 구성요소는 독립적으로 존재하지만, 인텐트를 통해 상호작용합니다.
이들 컴포넌트는 안드로이드 앱의 필수적인 요소로, 앱의 사용자 경험(UX)기능성을 높이는 데 중요한 역할을 합니다.

출처:
멋쟁이사자처럼 앱스쿨 3기 https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ko

앱 매니페스트 개요  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 앱 매니페스트 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 모든 앱 프로젝트는 프로젝트 소

developer.android.com

💡 Tip: 서비스는 메인 스레드에서 동작하므로, 백그라운드 작업을 위해 별도의 스레드를 사용하는 것이 좋습니다.