[Android Studio] 4대 Component & Intent 정리

ddwwon·2022년 11월 3일
0

Android

목록 보기
2/8
post-thumbnail

Activity

  • 화면을 구성하는 컴포넌트
    • 사용자 UI를 포함한 화면 하나를 의미
    • 시스템과 앱의 주요 상호작용을 도움
    • 사용자가 현재 관심을 가지고 있는 사항(화면에 표시된 것)을 추적해 activity를 호스팅하는 프로세스를 시스템에서 계속 실행하도록 한다.
    • 이전에 사용한 프로세스에 사용자가 다시 찾을 만한 activity(중단된 activity)가 있을 때
      • 다시 찾을 만한 activity를 유지하기 위해 더 높은 우선순위 부여
    • 앱이 프로세스를 종료하도록 도움 → 이전 상태가 복원 + 사용자가 activity로 돌아갈 수 있도록
    • 앱이 서로 사용자 플로우를 구현 + 시스템이 플로우를 조정하기 위한 수단 제공
    • 하나 이상의 View or ViewGroup을 가지고 있어야 함
    • Activity 클래스를 상속받음

Service

  • 백그라운드 작업을 하는 컴포넌트
    • 화면과 상관없이 백그라운드에서 장시간 실행해야 할 업무 담당
    • 오랫동안 실행되는 작업 or 원격 프로세스 작업 수행
    • Application이 종료되어도 동작
    • 사용자 인터페이스 제공X
  • ex) 음악재생, 타이머
  • Sercive 클래스를 상속받음

Contents Provider

  • 앱의 데이터를 관리 + 다른 Application의 데이터를 제공하는 데 사용되는 컴포넌트
    • 권한을 획득해야 사용 가능
    • 데이터를 저장, 불러와서 사용할 수 있는 시스템
    • 파일 시스템 or SQLiteDB, 기타 저장소 위치에서 앱이 접근 가능한 저장소의 데이터를 읽거나 쓰기 가능
      • ex) DB, 파일 시스템
    • 용량이 큰 데이터를 공유하는 데 적절
    • 공유되지 않은 데이터를 읽고 쓰는 데도 유용
  • ex) 인스타그램에서 갤러리 앱에 접근해 사진 가져오기
  • ContentProvider 클래스를 상속받음

Broadcast Receiver

  • 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트
    • 현재 실행되지 않은 앱에도 시스템이 broadcast 전달 가능
    • 사용자 인터페이스X
    • 상태 표시줄 알림 생성
  • Event: 시스템에서 발생하는 특정 상황
    • ex) 부팅 완료, 배터리 방전
  • BroadcastReceiver 클래스를 상속받음

Intent

  • 정의
    • 메시징 객체
    • 다른 앱 구성 요소로부터 작업을 요청하는 데 사용
  • ex)
    • 액티비티 시작
      • Activity의 새 instance를 시작하기 위해 IntentstartActivity()로 전달
        • Intent: 시작할 액티비티 설명 + 모든 필수 데이터 담음
      • Activity가 완료되었을 때 결과 수신: startActivityForResult() 호출
        • Activity는 해당 결과를 ActivityonActivityResult() 콜백에서 별도의 Intent 객체로 수신
    • 서비스 시작
      • 일회성 작업을 수행할 때, IntentstartService()에 전달하면 됨
      • Intent: 시작할 서비스를 설명 + 모든 필수 데이터 담음
      • 서비스가 클라이언트-서버 인터페이스로 디자인된 경우
        • 다른 구성 요소로부터 서비스에 바인딩하려면? ⇒ IntentbindService()에 전달
    • 브로드캐스트 전달
      • IntentsendBroadcast() or sendOrderedBroadcast()에 전달
  • 유형
    • 명시적 Intent
      • Intent를 충족하는 application이 무엇인지 지정
      • 앱 안에서 구성 요소를 시작할 때 사용
        • 시작하고자 하는 액티비티 or 서비스의 클래스 이름 알고있어서
      • ex) 사용자 작업에 응답해 새로운 액티비티를 시작 or 백그라운드에서 파일을 다운로드하기 위해 서비스를 시작하는 것
    • 암시적 Intent
      • 특정 구성 요소의 이름X
      • 수행할 일반적인 작업을 선언해 다른 앱의 구성 요소가 이를 처리할 수 있도록
      • ex) 사용자에게 지도에 있는 한 위치를 표시하고자 하는 경우, 해당 기능을 갖춘 다른 앱이 지정된 위치를 지도에 표시할 수 있음

참고 사이트

0개의 댓글