앞의 게시물에서 안드로이드의 4대 구성요소인 엑티비티, 서비스, Broadcast Receiver, 콘텐츠 제공자에 대해서 설명했다. 전체적인 내용은 다음 게시물을 참고하면 된다.
3. 안드로이드 기본 구성요소
이번 게시물은 안드로이드의 기본 구성요소, 흔히 4대 컴포넌트라고 불리는 요소들에 대한 내용이다. 그 전에 안드로이드의 기본적인 운영에 대해서 살펴보자면, 안드로이드 운영체제는 기본적
self-motivated-developer.tistory.com
안드로이드 기본 구성요소 중 activity는 화면 하나를 구성하는 구성요소이다. 앱의 activity를 사용하려면 manifest에 관련한 정보를 등록하고 수명주기를 관리해야 한다.
manifest 안에는 <application> 태그의 하위 요소로 <activity>의 요소를 추가하여 activity를 사용할 수 있다. 부가적인 기능으로 intent filter 속성을 선언하여 사용할 수 있는데, manifest에서 <intent-filter> 의 여러 속성들을 통해 기능을 사용할 수 있다. 예를 들어 <category> 를 통해 어플의 시작화면을 설정하는 것도 이 기능의 일부이다. 앱이 독립적인 상태를 유지하고 다른 앱이 activity를 활성화하지 못하게 하려면 intent-filter를 작성하지 않는 것도 방법 중 하나이다. intent-filter와 관련된 자세한 내용은 다음 공식 홈페이지에 잘 나와있다.
인텐트 및 인텐트 필터 | Android 개발자 | Android Developers
An Intent is a messaging object you can use to request an action from another app component . Although intents facilitate communication between components in several ways, there are three fundamental use cases: An Activity represents a single screen in…
developer.android.com
activity의 생명주기는 어플을 만드는데 중요하게 고려해야 하는 사항이다. 사실 개발을 하면서 그때 그때 확인하고 공부해봤지만, 이렇게 정리하는 것은 처음인데 생각보다 복잡하고 잘 이용하면 큰 도움이 될 것 같다고 느꼈다.
activity 의 생명주기 종류에는 6가지가 있다. onCreate( ), onStart( ), onResume( ), onPause( ), onStop( ), onDestroy( )가 그 종류이다.
onCreate( )
activity를 생성할 때 실행하는 것으로 "시작됨" 상태로 만들어주는 필수 구현 콜백이다. 이를 구현하면 데이터를 목록에 바인딩하고, viewModel과 연결하는 등의 활동이 가능하다. 앱이 시작되고 난 후에 계속 이 "시작됨" 상태에 머무르는 것이 아니라 바로 다음 단계들을 호출하게 된다.
onStart( )
앞의 "시작됨" 상태에 들어간 시스템이 호출하는 콜백으로 "재개됨"상태로 넘어가게 해주는 콜백이다. activity가 사용자에게 표시되고 포그라운드로 보내져 사용자와 상호작용이 가능해지는 단계이다. UI코드가 초기화되기도 한다.
onResume( )
"재개됨" 상태에서 호출되며 상호작용이 시작되는 단계이다. 앱에서 포커스가 떠날 때까지 이 상태에 어플이 머무르게 된다. (포커스가 떠나는 경우는 전화가 오거나 다른 activity로 이동하는 경우가 있다.) 이때 방해가 되는 이벤트가 발생하면 "일시중지" 상태가 되어 다음 콜백이 호출된다.
onPause( )
activity가 포그라운드에서 사라지면 첫번째로 호출되는 콜백으로 아주 짧은 시간 실행된다. 그렇기 때문에 데이터를 저장하거나 db 트랜잭션 등을 하면 안된다.
onStop( )
activity 가 더이상 사용자에게 표시되지 않으면 "중단됨" 상태에 들어간다. 대표적으로 새로운 activity가 화면 전체를 차지하는 경우에 해당한다.
onDestroy( )
activity가 소멸되기 전에 호출된다. 공식문서에 따르면 다음과 같은 경우에 호출된다.
- (사용자가 활동을 완전히 닫거나 활동에서 finish()가 호출되어) 활동이 종료되는 경우
- 구성 변경(예: 기기 회전 또는 멀티 윈도우 모드)으로 인해 시스템이 일시적으로 활동을 소멸시키는 경우
activity 생명주기를 간단히 사진으로 나타내면 다음과 같다.
이렇게 여러번 봐도 헷갈리고 어렵게 느껴진다. 제일 좋은 방법은 activity 여러 개를 만들어서 각 생명주기를 log를 찍어가면서 테스트 해보는 것이다. 어렵게 느껴진다면 이러한 방법도 추천한다!
'Android 공부' 카테고리의 다른 글
6. 안드로이드 context (0) | 2023.01.08 |
---|---|
5. 안드로이드 Singleton 패턴 (0) | 2023.01.06 |
3. 안드로이드 기본 구성요소 (0) | 2023.01.03 |
2. 비정상 종료와 ANR (0) | 2022.12.29 |
1. Gradle (그레이들) 에 대하여 (0) | 2022.12.27 |