4대 컴포넌트

Activity

  • 앱과 사용자가 상호 작용을 하기 위한 진입점
    • 앱을 실행할 때는 전체적으로 호출하는 것이 아니라 앱의 액티비티를 호출
  • 모든 앱에 반드시 한 개 이상 존재
  • 사용자와 상호 작용을 위한 UI가 있음
    • 앱이 실행되면 화면이 표시됨
    • 사용자의 입력 값을 받음 (화면 클릭, 롱 클릭, 스와이프 등)
    • 사용자에게 제공하고자 하는 내용을 화면에 표시함
  • Lifecycle을 가지고 있음

Service

  • 백그라운드에서 오래 실행되는 작업 수행을 위한 컴포넌트
  • 사용자가 다른 앱으로 전환하더라도 백그라운드에서 계속 실행
  • UI가 없음
  • 종류
    • 포그라운드 서비스
      • 사용자에게 잘 보이는 작업
      • 반드시 알림을 표시해야 하며, 사용자가 앱과 상호 작용 하지 않을 때에도 계속 실행됨
      • ex) 음악 재생
    • 백그라운드 서비스
      • 사용자에게 직접적으로 보이지 않는 작업으로 알림이 표시되지 않음
      • ex) 저장소 압축, 게임 업데이트, 파일 압축 등
      • API 레벨이 26 이상인 경우 아래를 사용
        • 즉시 실행해야 하는 작업: Work Manager
        • 지연 작업: Alarm Manager
    • 바인드 서비스
      • 앱 컴포넌트가 bindService를 호출해 서비스를 호출하면 서비스가 바인딩 됨

      • 바인딩 된 서비스는 클라이언트-서버 인터페이스를 제공해 서비스와 상호 작용 함

      • 여러 개가 한꺼번에 바인딩 될 수 있고, 바인딩 된 컴포넌트가 모두 종료되면 서비스도 종료됨

        스크린샷 2023-03-09 오후 6.33.12.png

BroadcastReceiver

  • 안드로이드 OS에서 발생하는 이벤트와 정보를 앱에서 수신할 수 있도록 하는 구성 요소
  • UI 없음
  • ex)
    • 음악 앱에서 이어폰이 꽂혀 있다 해제되었을 때 음악이 끊기게 할 수 있도록 이벤트를 캐치
    • 화면이 꺼졌는지, 배터리가 부족한지, 사진을 캡처했는지

ContentProvider

  • 파일 시스템, SQLite 데이터베이스, 웹상이나 앱이 액세스할 수 있는 다른 모든 영구 저장 위치에 저장 가능한 앱 데이터의 공유형 집합을 관리
  • 디바이스에 저장되어 있는 모든 데이터에 접근할 수 있는 권한을 관리함
  • 다른 앱은 ContentProvider를 통해 해당 데이터를 질의하거나 수정할 수 있음
  • ex) 연락처 정보, 갤러리 이미지/비디오

Manifest

  • 앱의 필수적인 정보를 담고 있는 파일
    • 앱의 패키지 이름
    • 앱의 구성 요소
    • 권한
    • 필요한 기능

Intent

  • 구성 요소(4대 컴포넌트 등)간 통신을 할 수 있게 하는 역할
  • 앱에 포함된 구성 요소 이외에 다른 앱의 구성 요소와도 통신할 수 있음
    • 명시적 Intent
      • 특정 컴포넌트, 액티비티를 명확히 특정해 실행할 경우
      • AActivity에서 BActivity 실행을 호출할 경우
    • 암시적 Intent
      • 동작을 특정하긴 했지만 실행될 대상이 달라질 수 있는 경우
      • 특정 URL을 실행한다는 액션을 요청한 경우, 웹 브라우저 기능을 가진 다수의 앱이 호출될 수 있는 경우