[Android] 액티비티의 생명주기
- 액티비티생명주기(Activity Lifecycle)는 액티비티가 생성되어 소멸되기까지의 과정을 말한다.
- 액티비티 상태는 3가지로 나뉘는데 이 상태에 따라서 앱이 어떻게 동작되어야할지 생각학고 구현을 해야한다.
- 액티비티의 3가지 상태
- 활성 : 액티비티 화면이 출력되고 있으며 사용자가 이벤트를 발생시킬 수 있음
- 일시 정지 : 액티비티의 화면이 출력되고 있으나 사용자가 이벤트를 발생시킬 수 없음
- 비활성 : 액티비티의 화면이 출력되고 있지 않은 상태
- 액티비티의 순서
onCreate()
→onStart()
→onResume()
→onPause()
→onStop()
→onDestroy()
- 액티비티의 3가지 상태
메소드 | 설명 | 다음 메소드 |
---|---|---|
onCreate() | 액티비티가 생성될 때 호출되며 사용자 인터페이스 초기화에 사용되며 필수적으로 구현해야함. | onStart() |
onRestart() | 액티비티가 멈췄다가 다시 시작되기 바로 전에 호출됨. 액티비티가 실행을 종료하면 시스템은 onDestroy 를 호출함 | onStart() 또는 onDestroy() |
onStart() | 액티비티가 사용자에게 보여지기 바로 직전에 호출됨. 앱이 활동을 포그라운드에 보내 상호작용 할 수 있도록 준비함. 이 메서드는 매우 빠르게 완료되고 다음 메서드를 호출함 | onResume() 또는 onStop() |
onResume() | 액티비티가 사용자와 상호작용하기 바로 전에 호출됨. 이 상태에 들어갔을 때 앱이 사용자와 상호작용하고 어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때까지 앱이 이 상태에 머무름(전화오거나, 사용자가 다른화면으로 이동하거나, 기기가 꺼지는 이벤트가 있을때가 이에 해당함) | onPause() |
onPause() | 다른 액티비티가 보여질 때 호출됨. 이 메서드는 아주 잠깐실행되므로 저장 작업을할때는 시간이 부족할 수 있음. 그러므로 이 메서드를 사용하여 사용자 데이터를 저장하거나 네트워크호출, 데이터베이스 트랜잭션 등을 수행하면 실행이 끝나기전에 완료되지 못할 수 있음. 부하가 큰 종료 작업은 onStop 에서 해야함 | onResume() 또는 onStop() |
onStop() | 액티비티가 더이상 사용자에게 보여지지 않을 때 호출됨. 메모리가 부족할 경우에는 onStop() 메소드가 호출되지 않을 수도 있음. | onRestart() 또는 onDestroy() |
onDestroy() | 액티비티가 소멸될 때 호출됨. finish() 메소드가 호출되거나 시스템이 메모리 확보를 위해 액티비티를 제거할 때 호출됨. | 없음 |
※ onStop(), onDestory()는 호출되지 않을 수도 있음