컴포넌트는 애플리케이션의 구성요소로 여러개의 컴포넌트가 모여 하나의 애플리케이션을 이룬다.
안드로이드에서는 클래스로 컴포넌트를 개발하며, 하나의 클래스가 하나의 컴포넌트가 된다.
일반 클래스
개발자 코드에서 생명주기를 관리
컴포넌트 클래스
안드로이드 시스템에서 생명주기를 관리
1. 액티비티 ( Activity )
화면을 구성하는 컴포넌트로, 앱 실행 시 출력한 내용이 폰 화면에 나온다.
2. 서비스 ( Service )
백그라운드 작업용 컴포넌트이다.
3. 컨텐츠 프로바이더 ( ContentProvider )
앱의 데이터를 주고받는 컴포넌트로, 앱 간의 데이터 공유를 담당한다.
4. 브로드캐스트 리시버 ( BroadcastReceiver )
부팅 완료, 배터리 방전 등의 시스템 이벤트가 발생할 때 실행되는 컴포넌트이다.
앱은 여러개의 컴포넌트를 사용하여 구성된다.
예를 들어, 앱이 실행되었을때 화면이 나오지 않고 백그라운드에서만 실행되는 앱의 경우 Activity 컴포넌트가 없이 구성되어있다.
각 컴포넌트는 독립된 실행 단위로, 서로 영향을 주고받지 않는다.
채팅방을 예로 들면, 목록을 보여주는 ListActivity와 채팅방을 보여주는 ChatActivity가 있다고 하자. 이 경우, 채팅방을 선택할때 ListActivity에서 ChatActivity를 생성하는 것이 아니라, 시스템으로 Intent를 보내서 Activity를 실행한다.
이러한 특징을 잘 보여주는 것으로, 알림창에서 채팅알림을 클릭할 경우 ListActivity를 거치지 않고 ChatActivity가 바로 실행되어 채팅방으로 들어갈 수 있다.
위의 예시처럼 안드로이드앱은 메인 함수 개념이 없고 실행시점이 다양하다.
애플리케이션 라이브러리(다른 애플리케이션을 라이브러리처럼 사용)를 사용할 수 있다.
또다른 특징으로 리소스를 많이 활용하게 한다.
리소스란, 코드에서 정적인 값을 분리한 것이다.
xml파일에 아래와 같이 저장해두면 R.string
을 통해서 쉽게 접근할 수 있다.
(xml)
<string name = "mytxt">
something
</string>
(kotlin)
textView.text = resources.getString(R.string.mytxt)