안드로이드는 크게 컴포넌트 클래스와 일반 클래스로 나뉜다
구분하는 기준은 생명주기 관리를 안드로이드 시스템이 한다면 컴포넌트, 개발자가 한다면 일반이다
안드로이드 컴포넌트는 4종류로 나뉜다
시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트
사용자 이벤트가 아니라 시스템 이벤트라는 점을 유의해야 한다
리시버의 생명주기 함수는 onReceive 함수 하나 뿐이다
매니페스트에 선언함으로써 모든 상황에서 리시버를 사용할 수도 있지만, registerReceiver, unregisterReceiver 함수를 통해 동적으로 등록할 수도 있다
이렇게 동적으로 또는 매니페스트를 통해 등록된 리시버는 다음 코드를 통해 실행할 수 있다
val intent: Intent = Intent(this, MyReceiver::class.java)
sendBroadCast(intent)
이를 통해 시스템 이벤트 부팅 완료, 화면 켬/끔, 배터리 상태 등의 정보를 받을 수 있다
각 기능마다 접미사로 해당 이름들이 붙어있기 때문에 어떤 클래스가 어떤 컴포넌트인지 구분하는 것은 쉽다
컴포넌트는 앱 안에서 독립된 실행 단위다
왜냐하면 시스템 컴포넌트의 생명주기는 안드로이드 시스템이 관리하기 때문이다
카톡을 예시로 들면 채팅 목록 화면에서 선택으로 채팅 화면으로 진입한다고 하자
ListActivity에서 ChatActivity를 직접 생성하는 개념이 아니다
ListActivity는 안드로이드 시스템에 ChatActivity를 생성해 달라고 의뢰할 수 있을 뿐이다
그러면 시스템은 해당 액티비티를 독립적으로 생성하며, 따라서 두 액티비티는 서로 종속되지 않고 독립적이다.
인텐트(Intent)