
안드로이드 운영체제는 컴포넌트 기반입니다.
컴포넌트란?
앱의 구성 단위이며, 앱 내에서 독립적인 실행 단위
컴포넌트가 모이고 인텐트로 상호작용 하여 비로소 앱이 되는 것
그중 4대 컴포넌트 중 Activitiy에 생명주기를 알아보겠습니다.
https://developer.android.com/guide/components/activities/activity-lifecycle
활동 수명 주기에 관한 이해 | Android 개발자 | Android Developers
활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페
developer.android.com
생명주기는 언제 작동하는가?
구글 Play Store에 등록 된 앱을 설치한 후 유저는 앱에서 클릭, 나가기, 사진 다운로드, 업데이트 등
다양한 기능을 사용하게 되면서
나도 모르게 시스템에서 액티비티의 라이프사이클을 관리하면서 자동호출되는 함수입니다.
액티비티 생명 주기 개념
생명주기(Life Cycle)는 단계가 있으며, Activity Class 내부에 6가지 콜백으로
구성된 함수들이 존재합니다.
onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()
아니 방금은 컴포넌트라면서 왜 Class인가요?
개발자의 의해서 만들어지는 클래스인데 클래스의 라이프사이클 관리는
개발자가 직접 하는 것이 아니라 안드로이드 시스템에서 하기 때문에 컴포넌트 라 불림
on으로 시작하는 함수 6가지는 사용자에 의해 발생하는 함수이며 하나씩 적어보겠습니다.
왜 귀찮게 6가지나 하나요?
사용자는 해당 앱뿐만 아니라
다른 앱으로 전환할 경우에도 휴대폰 메모리 내부에는 해당 앱이 여전히 남아 있으며
다시 전환 시 사용자자가 예상한 대로 앱이 동작할 수 있도록 구현할 필요가 있습니다.
(혹은 보안 등 취약성을 위해)
onCreate()
이 콜백 함수는 액티비티를 생성 할 때 최초 1회 실행하는 것으로 필수적으로 구현해야함
setContentView()를 이용하여 현재 XML 레이아웃 파일과 연결
onStart()
생성 된 후 onStart()가 호출되면 사용자에게 UI가 표시되고 상호작용 할 수 있도록 준비하는 단계
이 메서드는 매우 빠르게 완료 되며 곧 바로 onResume() 메서드를 호출
onResume()
앱이 사용자와 상호작용이 가능한 상태, 앱을 종료하거나 벗어나기 전까지 앱은
onResume 상태에 머물게 됩니다.
onCreate(), onStart(), onResume() 상태가 비로소
사용자에게 화면이 보이고, 유저의 이벤트(클릭 등)를 받는 상태입니다.
onPause()
앱 사용자가 Activity를 떠날 상황에 이 메서드를 호출합니다.
예시1) 앱을 사용 할 때 카카오톡 알림, 전화 등
앱에 화면에 일부를 가릴 시 onPause()가 실행 된 상태입니다.
예시 2) 윈도우 모드로 두가지 앱을 실행할 땐 사용자에게 보이지만
A 앱을 사용할 땐 B 앱을 사용하지 못하기 때문에 onPause()가 실행 된 상태
공통점 사용자의 이벤트를 받아드릴 수 없다.
해당 액티비티(화면)로 돌아갈 시, onResume() 함수를 호출한다.
onStop()
앱 사용자가 해당 화면을 벗어날 때
예시 1. 전화를 받을 때
예시 2. 화면을 이동할 때
예시 3. 홈버튼을 눌렀을 때
예시 총 3가지 특징은
해당 앱에 화면은 안 보인다입니다.
onStop()함수를 사용하는 이유는 앱에 화면이 보이지 않을 때
굳이 동영상 재생, 슬라이드 화면 이동 같은 메모리를 차지하는 행위가
불필요하기 때문에 방지하기 위함입니다.
다시 앱으로 돌아오게 되면
(예시 1, 예시 2, 예시3)
onStop() → onRestart() → onStart() → onResume() 순으로 이동
그래서 항상 onRestart(),onStart(),onResume()은 생명주기에 있어서
반복호출 가능성이 있습니다. → onCreate()에 setContentView() 함수를 사용하는 이유
onDestroy()
해당 화면이 소멸되기 전에 호출되며,
예시 1) 사용자가 화면을 아예 닫거나, finish() 함수가 호출 될 때
finish() 함수란?
현재 액티비티를 종료시켜 뒤로가기 버튼을 눌러도 가질 않음.
Activity가 이제 필요 없음을 의미하기 때문에 아예 완전히 메모리에서 사라지게 된다.
'Android-Kotlin📱' 카테고리의 다른 글
Fragment Lifecycle Callback (0) | 2023.12.03 |
---|---|
[Android] Room (Entitiy, DAO, Database) (0) | 2022.07.09 |
[Android] 안드로이드 4대 컴포넌트 (Activity, Service, BroadCast Receiver, Content Provider) (0) | 2022.06.19 |
[Android] Constraint Layout Guideline (컨스트레인트 레이아웃 가이드라인) (0) | 2022.06.07 |
[Kotlin] Delegation Pattern, by (0) | 2022.06.01 |