Android/study

[Android] 안드로이드 액티비티 생명주기와 상태 (+ 호출 예제)

written by yunwon 2021. 8. 8. 21:10

 

안드로이드에서 화면이 아닌 액티비티 자체가 어떤 원리로 수행되는지 살펴보자.

액티비티 실행 주체는 "안드로이드 시스템"이므로 시스템에서 액티비티 생명주기를 어떻게 관리하며,

그때 개발자 코드에서 신경 써야 하는 부분은 무엇인지 알아본다.

 


액티비티 생명주기란?

사용자가 앱을 탐색하고, 앱에서 나가고, 앱으로 다시 돌아가면, 앱의 Activity 인스턴스는 수명 주기 안에서 서로 다른 상태를 통해 전환된다. Activity 클래스는 활동이 상태 변화를 알아차릴 수 있는 여러 콜백을 제공한다. 그렇기에 안드로이드 생명주기를 액티비티 생명주기라 지칭하며, 이는 액티비티가 생성되고 정지되고 재생되고 종료되는 등의 상태 변화 그에 따른 콜백 메서드를 총칭한다.

 

 


 

액티비티 상태

  • 활성 상태(activity running)
    현재 액티비티가 화면을 점유하여 출력되고 있으며 사용자 이벤트 처리가 정상으로 처리되는 상태
  • 일시 정지 상태(pause)
    현재 액티비티가 일시적으로 사용이 불가능한 상태
  • 비활성 상태(stop)
    현재 액티비티가 다른 액티비티로 인해 화면이 완벽하게 가려진 상태

 

생명주기 호출 메서드 종류

onCreate()

@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setConentView(R.layout.activity_main);
}

액티비티가 최초로 생성되었을 때 호출된다.
액티비티에 필요한 리소스를 초기화(정적 설정)한다.

 

onReStart()

액티비티가 onStop 되었다가 화면에 다시 보여질 때 호출된다.

 

onStart()

액티비티가 사용자에게 표시되기 직전에 호출된다.
사용자에게 UI가 보여지기 위해 액티비티를 포그라운드로 보내 사용자와 상호작용을 할 준비를 한다.
해당 콜백 메서드는 매우 빠르게 진행된다.

 

onResume()

포그라운드에서 액티비티와 사용자가 상호작용한다.
사용자에 의해 기존 onCreate() 메서드에서 정의한 이벤트 처리가 실직적으로 쓰인다.

 

onPause()

사용자가 현재 액티비티를 떠날 때 첫 신호로 시스템에 의해 호출된다.
화면상에는 보이지만 focusing을 잃어버려 포그라운드에 띄어진 액티비티가 백그라운드로 내려온다.

 

onStop()

화면이 완전히 새로운 액티비티로 전환하여 기존 화면이 보이지 않을 때 호출된다.

 

onDestroy()

액티비티가 완전히 소멸되기 직전에 호출된다.

 


 

생명주기 호출 메서드 전환 예제

1. 화면 가로/세로로 회전했을 때

  • 기존 액티비티
    onPause() -> onSaveInstanceState() -> onStop() -> onDestroy()
  • 회전된 액티비티
    onCreate() -> onStart() -> onRestoreInstanceState() -> onResume()

2. 액티비티 재시작했을 때

onStop() -> onRestart() -> onStart() -> onResume()

 

3. 홈버튼 클릭했을 때

onPause() -> onStop()

 

4. 백버튼 클릭했을 때

onPause() -> onStop() -> onDestroy()

 

 

 

 

© 참고

https://ifcontinue.tistory.com/11

https://huiveloper.tistory.com/2

https://github.com/kkangseongyun/kkangs_android

 

GitHub - kkangseongyun/kkangs_android

Contribute to kkangseongyun/kkangs_android development by creating an account on GitHub.

github.com