Today's special moments become memories of tomorrow.

Android

[Android] 안드로이드 4대 컴포넌트

lotus lee 2021. 4. 6. 21:19

안드로이드 애플리케이션을 구성하는 기본 요소 4가지를 안드로이드 4대 컴포넌트라고 한다. 이 4가지는 액티비티(Activity), 서비스(Service), 브로드캐스트 수신자(Broadcast Receiver), 콘텐츠 제공자(Content Provider) 이다.

안드로이드 4대 컴포넌트는 AndroidManifest.xml 파일에 그 정보가 보관된다.

 

액티비티(Activity)

애플리케이션에서 사용자에게 보여지는 화면을 담당하는 컴포넌트이다. 화면뿐만 아니라 화면에서 일어나는 사용자와의 상호작용도 액티비티가 관여한다. 여러 개의 액티비티가 모여서 하나의 애플리케이션을 구성한다. 매니페스트 파일에서 <activity> 태그 형식으로 하나의 액티비티를 표현한다.

 

서비스(Service)

액티비티가 사용자와의 상호작용에 관여한다면, 서비스(Service)는 사용자가 볼 수 없는 백그라운드에서 작업을 하는 컴포넌트이다. 즉, 사용자가 아무런 상호작용을 하지 않으면서도 작업을 수행하고 싶을 때 필요한 컴포넌트가 서비스이다. 

 

서비스는 백그라운드에서 항상 실행된 상태로 작업을 진행해야 한다. 따라서 서비스는 한 번 실행되면 종료되지 않고 계속 유지된다.

 

서비스도 하나의 컴포넌트이므로 매니페스트 파일에서 관리되며, <service>태그를 사용한다.

 

브로드캐스트 수신자(Broadcast Receiver)

브로드캐스트(Broadcast)란, 메시지를 여러 객체에 전달하는 것을 말한다.(1 대 다)

(※유니캐스트(Unicast)는 1 대 1)

 

안드로이드에서는 브로드캐스팅 메시지를 여러 애플리케이션에 전달할 수 있는데, 이 때 브로드캐스트 수신자를 등록한 앱은 이 메시지를 전달받을 수 있다.

 

브로드캐스팅 메시지는 여러 종류가 있다. 따라서 브로드캐스트 수신자는 어떤 종류의 메시지를 전달받을 지 결정할 수 있다. 매니페스트 파일에서 브로드캐스트 수신자는 <receiver>태그를 통해 나타내는데, 이 <receiver>태그 안에 <intent-filter>를 통해 전달받을 메시지 종류를 결정한다.

 

만약, SMS 정보를 받고 싶다면 다음과 같이 매니패스트 파일을 작성할 수 있다.

<receiver>
  <intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
  </intent-filter>
</receiver>

 

브로드캐스팅 메시지 종류

ACTION_BOOT_COMPLETED

부팅이 끝났을 때 (RECEIVE_BOOT_COMPLETED 권한등록 필요)



ACTION_CAMERA_BUTTON

카메라 버튼이 눌렸을 때



ACTION_DATE_CHANGED

ACTION_TIME_CHANGED

폰의 날짜, 시간이 수동으로 변했을때 (설정에서 수정했을때)



ACTION_SCREEN_OFF

ACTION_SCREEN_ON

화면 on, off



ACTION_AIRPLANE_MODE_CHANGED

비행기 모드



ACTION_BATTERY_CHANGED

ACTION_BATTERY_LOW

ACTION_BATTERY_OKAY

배터리 상태변화



ACTION_PACKAGE_ADDED

ACTION_PACKAGE_CHANGED

ACTION_PACKAGE_DATA_CLEARED

ACTION_PACKAGE_INSTALL

ACTION_PACKAGE_REMOVED

ACTION_PACKAGE_REPLACED

ACTION_PACKAGE_RESTARTED

어플 설치/제거



ACTION_POWER_CONNECTED

ACTION_POWER_DISCONNECTED

충전 관련



ACTION_REBOOT

ACTION_SHUTDOWN

재부팅/종료



ACTION_TIME_TICK

매분마다 수신



android.provider.Telephony.SMS_RECEIVED

sms 수신 (RECEIVE_SMS 권한 필요)



출처: https://itmir.tistory.com/424 [미르의 IT 정복기]

 

브로드캐스트 수신자도 서비스와 마찬가지로 화면과 별개로 동작한다. 따라서 브로드캐스트 수신자로부터 받은 메시지 정보를 화면에 나타내고 싶다면, 화면에 표시할 액티비티에 인텐트로 전달할 수 있다.

 

콘텐츠 제공자(Content Provider)

애플리케이션 사이에 데이터 공유가 가능하도록 하는 컴포넌트이다. 내용 제공자를 통해 주소록에 접근하거나, 갤러리에 접근이 가능하다. 콘텐츠 제공자는 파일 시스템, SQLite 데이터베이스, 기타 스토리지 등을 관리 및 제공한다.

 

콘텐츠 제공자로부터 데이터를 가져오기 위해서는 ContentResolver 객체를 통해 접근이 가능하다. 이 ContentResolver 객체는 getContentResolver() 메서드를 통해 얻을 수 있다. 데이터베이스에서 쿼리를 통해 데이터를 가져오듯, 콘텐츠 제공자가 관리하는 데이터를 가져오기 위해서는 이 ContentResolver 객체의 query() 메서드를 통해 쿼리한다.

'Android' 카테고리의 다른 글

[안드로이드] dp(dip)란 무엇인가?  (4) 2021.04.12
[Android] Context 란?  (0) 2021.04.08
[Android] 안드로이드 생명 주기  (0) 2021.03.08