Android Component(구성요소)는 안드로이드 개발에 있어 가장 중요한 기본이라 할 수 있다. 4대 컴포넌트라고도 불리며 Activity, Service, Broadcast Receiver, Content Provider 이다.
그중 Activity에 대해 먼저 알아보고자 한다.
Activity
- 사용자와 앱간의 상호작용을 할 수 있는 화면(View)을 제공한다. Activity에 UI를 배치할 수 있다.
- 생명주기(Lifecycle) 상태별 콜백 메서드가 존재하며, 각 메서드는 Lifecycle의 상태 변화에 알맞은 특정 작업을 수행할 기회를 제공한다.
메서드 |
설명 |
중단가능 |
다음 |
onCreate() |
시스템에서 Activity를 처음 생성할 때 호출 setContentView() 를 호출하여 UI 레이아웃을 정의 일반적인 정적 설정을 모두 수행(뷰 생성, 목록에 데이터 바인딩하기 등) 이 메서드에서는 Activity의 이전 상태가 캡처된 경우 해당 상태를 포함한 번들 객체가 전달 |
X |
onStart() |
onRestart() |
Activity가 중단되었다가 다시 시작되기 직전에 호출 |
X |
onStart() |
onStart() |
Activity가 사용자에게 표시되기 직전에 호출 |
X |
onResume() onStop() |
onResume() |
Activity가 시작되고 사용자와 상호작용하기 직전에 호출 Activity는 Activity Stack 맨 위에 있으며, 사용자가 정보를 입력 |
X |
onPause()
|
onPause() |
Activity를 벗어날 때 가장 먼저 호출 변경사항 등 중요한 데이터를 커밋 하도록 구현 이 메서드가 반환될 때까지 다음 Activity가 재개되지 않음. |
O |
onResume() onStop() |
onStop() |
Activity가 더 이상 사용자에게 표시되지 않게 되면 호출 |
O |
onRestart() onDestroy() |
onDestroy() |
Activity가 소멸되기 전에 호출 호출될 수 있는 경우 (* isFinishing() 메서드로 구분 가능) 1) Activity가 완료 (누군가가 여기에 finish()를 호출해서) 2) 시스템이 공간을 절약하기 위해 |
O |
- |
* 중단가능 : 시스템이 메서드가 리턴된 후 해당 액티비티 코드의 다른 줄을 실행하지 않고도 언제든 이 Activity를 호스팅하는 프로세스를 중단시킬 수 있는지 여부를 나타낸다.
- UI 구현 : Activity에 대한 UI는 뷰 계층- View 클래스에서 파생된 객체가 제공한다. 각 뷰는 Activity 창안에 특정한 직사각형 공간을 제어하며 사용자 상호작용에 대응할 수 있다.
- Manifest에서 Activity 선언 : 시스템에서 Activity에 엑세스 할 수 있게 하려면 Manifest 파일에서 선언해야 한다. <application>요소의 하위 항목에 <activity>요소를 추가한다.
<activity>요소엔 label, icon, theme 등의 특성을 추가할 수 있다.
<intent-filter> : 다른 애플리케이션 컴포넌트가 이를 활성화하는 방법을 선언하기 위해 사용한다. 다른 애플리케이션에서 사용할 수 없게 하고자 하는 Activity에는 인텐트 필터가 없어야 한다.
애플리케이션에서 전달된 암시적 인텐트에 응답하도록 하려면 Activity에 추가로 인텐트 필터를 정의해야 한다.
- 인텐트 유형
1) 명시적 인텐트 : 시작할 컴포넌트를 이름으로 지정(완전히 정규화된 클래스 이름)
2) 암시적 인텐트 : 수행할 일반적인 작업을 선언하여 다른 앱의 컴포넌트에서 이를 처리함. 해당 앱의 Manifest 파일에 선언된 <intent-filter>와 일치 여부 확인 후 인텐트 전달
- Activity 상태 저장 : onSaveInstanceState()를 재정의하여 Activity 상태에 대한 정보를 보존하도록함. (기본 구현이 UI 상태를 저장하는데 도움을 줌, super클래스 호출)
* onSaveInstaceState()의 호출이 보장되지 않기 때문에 영구데이터를 저장하려면 onPause()를 사용해야 함.
- Activity 조정 :
1) Activity A onPause() 메서드 실행
2) Activity B onCreate(), onStart(), onResume() 메서드가 순차적으로 실행
3) Activity A가 더 이상 화면에 표시되지 않는 경우 A의 onStop() 메서드 실행
'안드로이드 > Guide' 카테고리의 다른 글
안드로이드 개발 - (6) Android Component: Content Providers (0) | 2020.03.06 |
---|---|
안드로이드 개발 - (5) Android Component: Broadcast Receiver (0) | 2020.03.05 |
안드로이드 개발 - (4) Android Component: Service (0) | 2020.03.04 |
안드로이드 개발 - (2) Android Studio 프로젝트 생성 (0) | 2020.03.02 |
안드로이드 개발 - (1) Android Studio 설치 및 설정 (0) | 2020.02.27 |