Android - 수명 주기

2022. 4. 27. 11:33IT/안드로이드

반응형

Android의 기초인 활동 에 관해 자세히 알아보자.

활동 수명 주기는, 전체 기간중 activity상태를 의미한다. 

수명 주기는 , 활동이 생성되는 시점에 시작 ~ 활동이 소멸되어 리소스가 회수될 때 까지이다.

활동이 수명 주기 상태 변경에 올바르게 응답하지 않으면 버그가 발생해 동작을 혼동하거나, App에서 리소스를 너무 많이 사용 할 수 있다. App의 수명 주기를 파악하고, 수명 주기 상태 변경에 올바르게 응답하도록 해야한다. 

## 기본요건 

> Activity의 정의, App에서  Activity 를 만드는 방법을 알아야한다.

> onCreate() Method  기능과, 이 메서드에서 실행되는 작업의 종류를 알아야한다. 

## 학습 내용 

> Logging 정보를 Logcat에 출력하는 방법.

> Activity 수명 주기 기본사항과, 상태 이동시 호출되는 콜백

> 다양한 시점에 작업을 실행하는 방법.

> onSaveInstantState() 를 구현해 기기설정이 변경되면 손실될 수 있는 데이터를 유지시킨다. 앱이 다시 시작될때, 이 데이터를 복원하는 코드를 추가한다. 

 

1. onCreate() 메서드 확인

모든 Activity에서 구현해야하는 method가 바로 이 method이다. 여기서 활동의 1회성 초기화를 실행해야한다. 

예를들어, 레이아웃을 확장하거나, Click listener를 정의하거나, View 결합을 설정한다. 

onCreate() 수명 주기 Method 는, 초기화 된 직후( 새로운 Activity 객체가 메모리에 만들어 질 때) 한번 호출된다.

onCreate()가 실행되면 활동이 생성됨 으로 간주된다. 

 **** 참고 ****
onCreate() Method를 재정의 할 때, super클래스 구현을 호출하여 활동 생성을 완료해야하므로 super.onCreate()를 바로 호출해야한다. 

 

2. onStart() Method 구현

onStart() 메서드는 onCreate() 직후에 호출된다. onStart()가 실행되면 활동이 화면에 표시된다.

활동을 초기화 하는데 한번만 호출되는 onCreate()와는 달리, onStart()는 여러번 호출 될 수 있다.

onStart()는, 상응하는 onStop() 수명 주기 메서드와 페어링 된다. 

예를들어... User가 앱을 시작한 후(onStart), 기기 홈 화면으로 돌아오면 활동이 중지(onStop) 되고 더 이상 화면에 표시되지 않는것이다.

onCreate()와 onStart()에 로그를 넣고, 어플을 실행 -> 홈버튼을 눌러 홈 화면 이동 테스트를 반복 해보면, 

onCreate() 로그는 한번만 찍히고, onStart() 로그만 계속 찍히는것을 확인할 수 있다. 

 

3. 더 많은 로그 추가.

onResume(), onPause(), onStop(), onDestroy(), onRestart() 에도 각각 로그를 넣어 순서를 확인해보자. 

override fun onResume() {
   super.onResume()
   Log.d(TAG, "onResume Called")
}

override fun onPause() {
   super.onPause()
   Log.d(TAG, "onPause Called")
}

override fun onStop() {
   super.onStop()
   Log.d(TAG, "onStop Called")
}

override fun onDestroy() {
   super.onDestroy()
   Log.d(TAG, "onDestroy Called")
}

override fun onRestart() {
   super.onRestart()
   Log.d(TAG, "onRestart Called")
}

 

** 위와 같은 method를 간단하게 추가하기 위해서, Ctrl + O 키를 누르면 아래와 같은 popup이 뜬다. 

OK를 누르면 위와같은 함수가 소스에 반영된다. 

위 소스를 추가하고 앱을 실행해보면, 

실행onCreate(), onStart(), onResume() 콜백이 호출이 된다. 

기기에서 뒤로 버튼을 탭하면, onPause(), onStop(), onDestroy() 가 순서대로 호출된다. 

이는 '뒤로 버튼'을 사용하면, 활동 및 App이 완전히 닫힌다는 의미이다.

 onDestroy() 실행은 완전히 종료되었으며 Garbage Collection 될 수 있다는 의미이다. 

* Garbage Collection은, 더 이상 사용하지 않을 객체의 자동 정리를 나타낸다.

onDestroy()가 호출되면, 시스템은 이러한 리소스가 삭제 될 수 있음을 인식하고, 메모리 정리를 시작한다. 

 

 

728x90
반응형

'IT > 안드로이드' 카테고리의 다른 글

Android - 데이터 손실시 onSaveInstanceState() 사용  (6) 2022.04.27
Android - 수명 주기 사용 사례  (5) 2022.04.27
Android - RecyclerView  (6) 2022.04.20
Kotlin - List, MutableList  (6) 2022.04.20
Android - Material Design page  (2) 2022.04.19