728x90
활동 ( Activity)
- Activity의 개념 : 앱과 사용자의 상호작용을 위한 진입점
모바일 앱 환경은 사용자와 앱의 상호작용이 항상 동일한 위치에서 시작되는 것이 아니라는 점에서 데스크톱 앱 환경과 다르다. ⇒ 한 앱이 다른 앱을 호출할 때 호출 앱은 다른 앱의 활동을 호출
활동은 앱이 UI를 그리는 창을 제공, 일반적으로 하나의 활동 앱에서 하나의 화면을 구현. 즉, 대부분의 앱은 여러 활동으로 구성됨 ⇒ 화면보다 작고 다른 창위에 존재 가능
활동이 앱에서 일관된 사용자 환경을 형성하기 위해 함께 작동하지만 각 활동은 다른 활동에 단지 느슨하게 결합된다. 일반적으로 앱의 활동 간에는 최소한의 종속성만 있다.
⇒ 실제로 활동은 흔히 다른 앱에 속하는 활동을 시작한다. ex) 브라우저 앱은 소셜 미디어 앱의 공유 활동을 실행한다.
앱의 활동을 사용하려면 앱의 manifest에 활동 관련 정보를 등록하고 활동 수명 주기를 적절히 관리해야 한다.
⇒ manifest의 <activity> 태그를 사용하여 특정 활동을 시작할 수 있는 앱을 제어할 수 있다.
활동 생명 주기 개념
- onCreate() : ‘생성됨’
시스템이 활동을 생성할 때 실행된다. 구현 시 활동의 필수 구성요소를 초기화해야 한다. 앱은 여기에서 뷰를 생성하고 데이터를 목록에 결합해야 한다. 이후 setContentView()를 호출하여 사용자 인터페이스를 위한 레이아웃을 정의해야 한다. - onStart() : ‘시작됨’
onCreate()가 종료되면 활동은 ‘시작됨’ 상태로 전환되고 활동이 사용자에게 표시된다. 이 콜백에는 활동이 포그라운드로 나와서 대화형이 되기 위한 최종 준비에 준하는 작업이 포함된다. - onResume() : ‘실행중’
활동이 사용자와 상호작용을 시작하기 직전에 시스템은 이 콜백을 호출한다. 활동 스택의 맨 위에 있으며 모든 사용자 입력을 캡쳐한다. ⇒ 앱의 핵심 기능은 대부분 onResume() 메소드로 구현된다. - onPause() : ‘일시중지됨’
활동이 포커스를 잃고 ‘일시중지됨’ 상태로 전환될 때 시스템은 onPause()를 호출한다. 이는 활동이 여전히 부분적으로 표시되지만 대체로 사용자가 활동을 떠나고 있으며 활동이 조만간 ‘중지됨’ 또는 ‘다시 시작됨’의 상태로 전환됨을 나타낸다 - onStop() : ‘중지됨’
시스템이 호출하는 다음 콜백은 onRestart() 이며 활동이 완전히 종료되면 onDestroy()이다.
활동이 사용자에게 더 이상 표시되지 않을 때 시스템은 onStop()을 호출한다. 이는 활동이 제거 중이거나 새 활동이 시작중이거나 기존 활동이 ‘다시 시작됨’의 상태로 전환 중이고 중지된 활동을 다루고 있기 때문에 발생할 수 있다. 중지된 활동은 더 이상 표시되지 않는다. - onRestart() : ‘다시 시작됨’
‘중지됨’ 상태의 활동이 다시 시작되려고 할 때 시스템은 이 콜백을 호출한다. onRestart()는 활동이 중지된 시간부터 활동 상태를 복원한다. ⇒ 이 콜백 뒤에 항상 onStart()가 온다. - onDestroy() : ‘종료됨’
시스템은 활동이 제거되기 전에 이 콜백을 호출한다. 활동이 수신하는 마지막 콜백이며 일반적으로 활동 또는 활동이 포함된 프로세스가 제거될 때 활동의 모든 리소스를 해제하도록 구현된다.
상태 | 기능 | |
onCreate() | 생성됨 | 필수 구성요소 초기화 |
onStart() | 시작됨 | Activity가 사용자에게 표시 |
onResum() | 실행중 | 활동 스택의 맨 위에서 모든 입력을 캡쳐 |
onPause() | 일시중지됨 | 포커스를 잃음 / 액티비티의 일부가 가려짐 |
onStop() | 중지됨 | 사용자에게 더 이상 표시되지 않음 |
onRestart() | 다시 시작됨 | 중지된 시간부터 활동 상태를 복원 |
onDestroy() | 종료됨 | 활동 제거 및 리소스 해제 |
※ 피드백 환영합니다
728x90
'Android' 카테고리의 다른 글
[Android] RecyclerView (1) - 개념 및 구조 (0) | 2024.02.14 |
---|---|
[Android] SearchView 대신에 EditText 사용하기 (1) | 2024.02.13 |
[Android] 프래그먼트 (Fragment) (1) | 2024.02.12 |
[Android] TabLayout에 ViewPager2 사용하기 (1) | 2024.02.07 |
[Android] TabLayout 만들기 (1) | 2024.02.07 |