티스토리 뷰

 

📌  컴포넌트란?

  • 안드로이드 애플리케이션에서 컴포넌트는 앱의 주요구성요소를 의미한다. 각 컴포넌트는 특정기능을 수행하며 Activity, Service, BroadCast Receiver, Content Provider로 4가지가 있다.

 

📌 컴포넌트 유형

▶Activity

  • 사용자와 상호작용 하기위한 진입점(각각 독립되어 있다.)

 

▷ 상태주기(Life Cycle)

  • onCreate(): 액티비티가 처음 생성될 때 호출된다. UI를 설정하거나 데이터초기화 작업이 이 메서드에서 이루어진다.

 

  • onResume() : 사용자가 액티비티와 상호작용 할 수 있게 되었을 때 호출되는 메서드이다. 액티비티가 포그라운드에 있고 사용자입력을 받을 준비가 된 상태이다. 주로 애니메이션을 시작하거나 센서나 GPS 같은 리소스를 활성화 시키는 작업을 한다.

 

  • onPause() : 다른 액티비티가 시작되거나, 현재 액티비티가 포커스를 잃을 때 호출되는 메서드이다. 주로 사용자 입력을 중지하거나 변경사항을 저장하는 작업을 한다. onPause()는 매우 짧은 시간내에 완료 되어야하며 CPU집약적인 작업을 수행하면 안된다.

 

  • onStart(): 사용자에게 보여지기 직전에 호출되는 메서드이다. 액티비티가 아직 포그라운드에 있진 않은 상태이다. 주로 UI 업데이트나 리소스 로드와 같은 작업을 수행한다.

 

ex) 연락처앱을 클릭하면 우선적으로 뜨는 키패드화면이나 연락처 목록(첫 진입점)   

▶ Service

  • 백그라운드에서 계속 실행하기 위한 진입점. 오랫동안 실행되는 작업이나 원격프로세스를 위한 작업을 할 때 수행. 백그라운드에서 실행 되므로 화면 출력이 없고 UI가 필요 없다. → 액티비티와 레이아웃이 없어도 된다.

 

  • 액티비티의 lifecycle과 별개로 실행할 수 있다.(종속되어 있지 않다.)

 

  • 별도의 쓰레드에서 동작하지 않는다 → 메인쓰레드에서 동작한다.(메인쓰레드에서 동작하므로 쓰레드 작업이 필요한 경우 쓰레드를 생성해서 관리해야한다. 그렇지 않으면 ANR(Activity Not Response)이 발생하여 종료되는 문제가 발생한다.)

 

  • 사용자와 상호작용이 불가하다.

 

 Service의 종류

  • Foreground Service: 서비스가 수행하는 동작을 사용자에게 알린다. 활성화된 액티비티와 동일한 우선순위를 가진다. 따라서 시스템 메모리가 부족하더라도 안드로이드 시스템에 의해 강제종료될 확률이 낮다.

ex) 음악플레이어의 경우 실행중인 음악의 정보를 Notification을 통해 알린다. 서비스가 중단되거나 Foreground에서 제거되지 않는 이상 지울 수 없다.

  • Background Service: 사용자에게 보이지 않는 백그라운드 작업을 수행한다. 시스템 리소스가 부족할 때 강제종료가 가능하다.

 

  • Bound Service: Bound Service는 IBinder(onbind()메서드를 호출)라는 인터페이스를 통해 서버-클라이언트 관계처럼 서비스와 상호작용 한다.

 

 

 

 

 Service의 lifecycle

  • Start service 

1)onCreate()

- 서비스가 처음으로 호출될 때 onCreate() 메서드가 호출되며 여기서 서비스 초기화 작업을 수행한다.

- 이 메서드는 서비스 생애 한번만 호출된다.

 

2)onStartCommand()

- startService()가 호출될 때마다 onStartCommand(Intent, int, int)메서드가 호출된다.

- 여기서 서비스가 수행할 작업을 정의한다.

- 이 메서드는 서비스가 실행 중일 때 여러번 호출 가능하다.

- return값에 따라 서비스의 재시동 동작을 결정 가능하다.

START_STICKY: 시스템이 서비스를 중단한 후에도 재시작한다.

START_NOT_STICKY: 시스템이 서비스를 중단한 후에 재시작하지 않는다.

START_REDELIVER_INTENT: 중단한 후 마지막 Intent를 다시 전달하여 서비스를 재시작한다.

 

3)서비스 실행

- onStartCommand()에서 정의한 작업이 수행된다.

- 작업이 완료되면 stopSelf()를 호출하여 종료할 수 있다.

- 외부에서 stopService(Intent)를 통해서도 서비스를 종료시킬 수 있다.

 

4)onDestroy()

- 서비스가 종료될 때 onDestroy()가 호출된다.

- 정리작업을 수행하는 역할을 하며 이 메서드는 서비스 생애 단 한번만 호출된다.

 

  • BoundService

1)bindService()

- 애플리케이션 컴포넌트가 bindService(Intent, ServiceConnection, int) 메서드를 호출하여 서비스에 바인딩한다.

- ServiceConnection객체를 통해 서비스와의 연결상태를 관리한다.

 

2)onCreate()

- 서비스가 처음으로 호출될 때 onCreate() 메서드가 호출되며 여기서 서비스 초기화 작업을 수행한다.

- 이 메서드는 서비스 생애 한번만 호출된다.

 

3)onBind()

- 서비스에 바인딩될 때 onBind(Intent)가 호출된다.

- 여기서 클라이언트와 상호작용을 위한 IBinder 인터페이스를 반환한다.

 

4)클라이언트-서비스 상호작용

- IBinder 인터페이스를 통해 클라이언트는 서비스의 공개 메서드에 접근할 수 있다.

- 클라이언트와 서비스가 상호작용하는 동안 서비스는 계속 실행된다.

 

5)unbindService()

- 클라이언트가 서비스와의 연결을 해제하기 위해 unbindService(ServiceConnection)메서드를 호출한다.

- 모든 클라이언트가 바인딩을 해제 하면 onUnbind()메서드가 호출된다.

- 이 시점에서 서비스가 더이상 필요하지 않으면 onDestroy()메서드를 호출하여 종료한다.

▶Broadcast Receiver

  • 특정이벤트를 수신하고 이에 대응하는 컴포넌트. 브로드캐스트 리시버도 앱으로 들어갈 수 있는 명확한 진입점이므로 실행되지 않은 앱에도 시스템이 브로드캐스트를 전달할 수 있다. 브로드캐스트만 전달 하므로 UI가 필요하지 않다.

 

ex)부팅완료, 배터리방전, 사진캡쳐감지

 

 등록방법

  • 정적등록: AndroidManifest.xml에 리시버를 선언한다. (앱이 실행중이 아닐때도 시스템 이벤트를 받을 수 있다.)

 

  • 동적등록: 애플리케이션 코드 내에서 registerReceiver()메서드를 통해 리시버를 선언한다.(주로 특정상황에서만 사용하고 싶을 때 )

▶Content Provider

  • 앱의 데이터를 관리하고 애플리케이션과 공유하는 요소이다. 하나의 앱이 다른 앱과 데이터를 공유하려면 Content Provider를 통해 공유해야한다.

 

  • Content Provider는 데이터에 접근할 때 URI를 통해 접근한다.(URI는 데이터의 위치를 식별할 때 사용된다. )

 

  • Content Provider는 권한을 설정하여 데이터에 접근할 수 있도록 제한할 수 있다.

 

  • Content Provider는 Cursor객체를 통해 데이터를 제공한다. (Cursor객체는 데이터를 행단위로 접근할 수 있는 방법을 제공한다. moveToFirst(), moveToNext(), getColumnIndex(), getString(), getInt() 등의 메서드를 사용하여 데이터를 읽어온다. )

 

 

ex) 특정 앱에서 갤러리에 있는 사진 데이터를 가져와 프로필설정이나 사진 업로드를 할 때

 

'안드로이드' 카테고리의 다른 글

LifeCycle Of ViewModel  (1) 2025.10.05
Android Thread 통신과 Handler·Looper  (4) 2025.08.29
DataBinding, BindingAdapter를 사용할 때 무한루프  (2) 2025.08.02
ViewModel Test  (7) 2025.07.27
RecyclerView와 Adapter  (0) 2025.04.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함