반응형

안드로이드는 앱이 실행된 후 다른 액티비티로의 전환, 스마트폰 화면 종료(hold버튼), 어플리케이션 종료 등과 같은 현상이 발생할 때 생명 주기 메서드(Method)를 호출해서 상태 변화를 알려줍니다. 

 

*호출 메서드(Method)

onCreate() - 액티비티가 만들어짐 / 액티비티가 생성됩니다. 실제 코드에서 가장 많이 사용됩니다.

onStart() - 화면에 나타남 / 화면에 보이기 시작합니다.

onResume() - 화면에 나타나고 현재 실행 중 / 실제 액티비티가 실행되고 있습니다.

onPause() - 화면이 가려짐 / 액티비티 화면의 일부가 다른 액티비티에 가려집니다.

onStop() - 화면이 없어짐 / 다른 액티비티가 실행되어서 화면이 완전히 가려집니다.

onDestroy() - 종료됨 / 액티비티가 종료됩니다.

 

 

*생명 주기 콜백(Callback)

1. 액티비티 생성 후 화면에 나타나는 생명 주기

  i)   onCreate() 메서드로 생성된 다음 화면 구성요소를 메모리에 로드합니다.

  ii)  onStart()와 onResume()에서 화면의 구성요소를 나타내고 사용자와의 상호작용 시작합니다.

  iii) Resumed 상태를 유지합니다. 즉 액티비티가 화면에서 계속 실행되고 있음을 의미합니다.

  결론 : onCreate() -> onStart(), onResume() -> Resumed 상태 유지

 

2. 액티비티를 화면에서 제거하는 생명 주기(finish() 메서드로 액티비티 종료 시)

  i)  onPause(), onStop()이 동시에 실행합니다.

  ii) onDestroy()가 호출되면서 액티비티가 메모리에서 제거합니다.

  결론 : onPause(), onStop() -> onDestroy()

 

3. 새로운 액티비티가 생성될 때 현재 액티비티와 새로운 액티비티 생명 주기

  i)   현재 액티비티는 onPause(), onStop()을 호출합니다. (onDestroy()는 호출 안합니다.) 이 단계에서 액티비티 A는 멈춥니다.

  ii)  새로 생성된 액티비티는 onStart(), onResume()을 호출합니다.

  iii) 새로 생성된 액티비티는 실행 상태를 유지합니다.

 

4. 새로운 액티비티가 현재 액티비티를 일부 가리고 생성될 때의 생명 주기

  (새로운 액티비티가 현재 액티비티의 1dp라도 화면에 표시되는 경우)

  i)  현재 액티비티는 onPause()를 호출하고 Paused 상태를 유지합니다.

  ii) 새로운 액티비티가 종료되면 원래 액티비티는 onStart()를 거치지 않고 onResume()이 호출됩니다.

 

cf) 안드로이드의 화면(Activity)는 Back Stack(백 스택) 방식으로 쌓입니다. 그리고 Top에 있는 액티비티가 현재 화면에 나오는 실행 화면입니다.

반응형

+ Recent posts