mooni
[Kotlin] 앱의 구성요소와 Activity 생명주기에 대해 알아보자 본문
4가지 앱 구성요소
1. Activity
- 앱과 사용자가 상호작용을 하기 위한 진입점
- 모든 앱에 1개 이상 존재
- 사용자와 상호작용을 위한 UI 존재
- Lifecycle 존재
[Activity Lifecycle]
onCreate()
- 필수적으로 구현
- Activity Lifecycle 중 한 번만 발생해야하는 로직을 실행(멤버 변수 정의, UI 구성)
- saveInstanceState 매개변수 수신 -> Activity 이전 저장 상태가 포함된 Bundle 객체
onStart()
- Activity가 사용자에게 표시
- Activity를 포그라운드로 보내 상호작용할 수 있도록 준비
onResume()
- Activity가 포그라운드에 표시되어 사용자와 상호작용을 할 수 있는 상태
- 앱에서 포커스가 떠날 때까지 onResume 상태에 머무름
onPause()
- 사용자가 활동을 떠나는 첫 번째 신호
- 활동이 포그라운드에 있지 않지만, 잠시 후 다시 시작할 작업을 일시 중지 하거나 조정
- 필요하지 않은 리소스 해지
- 매우 짧은 시간이기 때문에 데이터 저장이나 네트워크 호출, DB의 IO 작업을 하면 안됨
onStop()
- Activity가 사용자에게 더이상 표시되지 않는 상태
- CPU를 비교적 많이 소모하는 종료 작업을 실행해야함(DB 저장)
- Activity가 중단되면 Android OS에서 리소스 관리를 위해 해당 Activity가 포함된 프로세스를 소멸시킬 수 있음
onDestroy()
- Activity가 완전히 종료되기 전에 실행
- 명시적으로 finish가 호출되어 Activity가 종료될 때 실행
- configurationChange로 인해 시스템이 Activity를 일시적으로 소멸시킬 때 실행
2. Service
- 백그라운드에서 실행되는 작업을 수행하기 위한 컴포넌트
- UI가 없음
- 포그라운드 서비스 : 사용자에게 잘보이는 작업, 반드시 알림을 표시, StartService를 통한 호출
- 백그라운드 서비스 : 사용자에게 직접적으로 보이지 않는 작업, StartService를 통한 호출
- 바인드 서비스 : 서비스 시작 방식, 클라이언트-서버 인터페이스를 제공해 서비스와 상호 작용
3. BroadcastReceiver
- Andorid OS에서 발생하는 이벤트와 정보를 앱에서 수신할 수 있도록 하는 구성요소
- UI가 없음
- ex) 화면 꺼짐, 배터리 부족, 사진 캡쳐 등
4. ContentProvider
- 파일 시스템, SQLite 데이터베이스, 웹이나 앱이 엑세스할 수 있는 저장 가능한 앱 데이터의 공유형 집합 관리
- ex) 연락처 정보, 갤러리 이미지/비디오
+ Manifest
- 앱의 필수적인 정보를 담고 있는 파일
- ex) 앱의 패키지 이름, 앱의 구성요소, 권한 등
+ Intent
- 구성요소간의 통신을 할 수 있게 하는 역할
- 다른 앱의 구성요소와도 통신할 수 있음
- 명시적 Intent ex) A Activity에서 B Activity 실행을 호출할 경우
- 암시적 Intent ex) 특정 URL을 실행이라는 액션을 요청할 경우
'Kotlin' 카테고리의 다른 글
[Kotlin + Compose] 달력 구현(월 이동, 도트찍기, 모달) (0) | 2025.02.13 |
---|---|
[Kotlin] #1 Counter App Project (0) | 2025.02.02 |