[Android Studio] 4대 Component & Intent 정리
Activity
- 화면을 구성하는 컴포넌트
- 사용자 UI를 포함한 화면 하나를 의미
- 시스템과 앱의 주요 상호작용을 도움
- 사용자가 현재 관심을 가지고 있는 사항(화면에 표시된 것)을 추적해 activity를 호스팅하는 프로세스를 시스템에서 계속 실행하도록 한다.
- 이전에 사용한 프로세스에 사용자가 다시 찾을 만한 activity(중단된 activity)가 있을 때
- 다시 찾을 만한 activity를 유지하기 위해 더 높은 우선순위 부여
- 앱이 프로세스를 종료하도록 도움 → 이전 상태가 복원 + 사용자가 activity로 돌아갈 수 있도록
- 앱이 서로 사용자 플로우를 구현 + 시스템이 플로우를 조정하기 위한 수단 제공
- 하나 이상의
View
or ViewGroup
을 가지고 있어야 함
Activity
클래스를 상속받음
Service
- 백그라운드 작업을 하는 컴포넌트
- 화면과 상관없이 백그라운드에서 장시간 실행해야 할 업무 담당
- 오랫동안 실행되는 작업 or 원격 프로세스 작업 수행
- Application이 종료되어도 동작
- 사용자 인터페이스 제공X
- ex) 음악재생, 타이머
Sercive
클래스를 상속받음
Contents Provider
- 앱의 데이터를 관리 + 다른 Application의 데이터를 제공하는 데 사용되는 컴포넌트
- 권한을 획득해야 사용 가능
- 데이터를 저장, 불러와서 사용할 수 있는 시스템
- 파일 시스템 or SQLiteDB, 기타 저장소 위치에서 앱이 접근 가능한 저장소의 데이터를 읽거나 쓰기 가능
- 용량이 큰 데이터를 공유하는 데 적절
- 공유되지 않은 데이터를 읽고 쓰는 데도 유용
- ex) 인스타그램에서 갤러리 앱에 접근해 사진 가져오기
ContentProvider
클래스를 상속받음
Broadcast Receiver
- 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트
- 현재 실행되지 않은 앱에도 시스템이 broadcast 전달 가능
- 사용자 인터페이스X
- 상태 표시줄 알림 생성
- Event: 시스템에서 발생하는 특정 상황
BroadcastReceiver
클래스를 상속받음
Intent
- 정의
- 메시징 객체
- 다른 앱 구성 요소로부터 작업을 요청하는 데 사용
- ex)
- 액티비티 시작
Activity
의 새 instance
를 시작하기 위해 Intent
의 startActivity()
로 전달
Intent
: 시작할 액티비티 설명 + 모든 필수 데이터 담음
Activity
가 완료되었을 때 결과 수신: startActivityForResult()
호출
Activity
는 해당 결과를 Activity
의 onActivityResult()
콜백에서 별도의 Intent
객체로 수신
- 서비스 시작
- 일회성 작업을 수행할 때,
Intent
를 startService()
에 전달하면 됨
Intent
: 시작할 서비스를 설명 + 모든 필수 데이터 담음
- 서비스가 클라이언트-서버 인터페이스로 디자인된 경우
- 다른 구성 요소로부터 서비스에 바인딩하려면? ⇒
Intent
를 bindService()
에 전달
- 브로드캐스트 전달
Intent
를 sendBroadcast()
or sendOrderedBroadcast()
에 전달
- 유형
- 명시적
Intent
Intent
를 충족하는 application이 무엇인지 지정
- 앱 안에서 구성 요소를 시작할 때 사용
- 시작하고자 하는 액티비티 or 서비스의 클래스 이름 알고있어서
- ex) 사용자 작업에 응답해 새로운 액티비티를 시작 or 백그라운드에서 파일을 다운로드하기 위해 서비스를 시작하는 것
- 암시적
Intent
- 특정 구성 요소의 이름X
- 수행할 일반적인 작업을 선언해 다른 앱의 구성 요소가 이를 처리할 수 있도록
- ex) 사용자에게 지도에 있는 한 위치를 표시하고자 하는 경우, 해당 기능을 갖춘 다른 앱이 지정된 위치를 지도에 표시할 수 있음
참고 사이트