Android

[Android] 안드로이드 생명주기

an-hayyy 2021. 3. 11. 13:57

onCreate()

시스템이 먼저 활동을 생성할 때 실행되는 것으로, 필수적으로 구현. onCreate() 메서드에서 활동의 전체 수명 주기 동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행. onCreate() 메서드가 실행을 완료하면 시작됨 상태가 되고, 시스템이 연달아 onStart() onResume() 메서드를 호출.

 

onStart()

액티비티가 화면에 보이기 직전에 호출되는 메소드. 활동이 시작됨 상태에 들어가면 시스템은 이 콜백을 호출. onStart()가 호출되면 활동이 사용자에게 표시되고, 앱은 활동을 포그라운드에 보내 상호작용할 수 있도록 준비. 이 콜백이 완료되면 활동이 재개됨 상태에 들어가고, 시스템이 onResume() 메서드를 호출.

 

onResume()

액티비티가 화면 상에 보여지게 되면서 사용자로부터 어떠한 동작도 받지 않았을 때 호출. 활동이 재개됨 상태에 들어가면 포그라운드에 표시되고 시스템이 onResume() 콜백을 호출. 이 상태에 들어갔을 때 앱이 사용자와 상호작용합니다. 어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때까지 앱이 이 상태에 머무름. 이 상태에서 수명 주기 구성요소가 포그라운드에서 사용자에게 보이는 동안 실행해야 하는 모든 기능을 활성화할 수 있음. 방해되는 이벤트가 발생하면 활동은 일시중지됨 상태에 들어가고, 시스템이 onPause() 콜백을 호출. 활동이 일시중지됨 상태에서 재개됨 상태로 돌아오면 시스템이 onResume() 메서드를 다시 한번 호출.

 

onPause()

시스템은 사용자가 활동을 떠나는 것을 나타내는 첫 번째 신호로 이 메서드를 호출. 활동이 포그라운드에 있지 않게 되었다는 것을 나타냄. onPause() 메서드를 사용하여 Activity가 일시중지됨 상태일 때 계속 실행(또는 적절히 계속 실행)되어서는 안 되지만 잠시 후 다시 시작할 작업을 일시중지하거나 조정. onPause()는 아주 잠깐 실행되므로 저장 작업을 실행하기에는 시간이 부족할 수 있으므로 onPause()를 사용하여 애플리케이션 또는 사용자 데이터를 저장하거나, 네트워크 호출을 하거나, 데이터베이스 트랜잭션을 실행해서는 안됨. 부하가 큰 종료 작업은 onStop() 상태일 때 실행해야 함. onPause() 메서드의 실행이 완료되더라도 활동이 일시중지됨 상태로 남아 있을 수 있음. 오히려 활동은 다시 시작되거나 사용자에게 완전히 보이지 않게 될 때까지 이 상태에 머무름. 활동이 다시 시작되면 시스템은 다시 한번 onResume() 콜백을 호출. 활동이 완전히 보이지 않게 되면 시스템은 onStop()을 호출.

 

onStop()

활동이 사용자에게 더 이상 표시되지 않으면 중단됨 상태에 들어가고, 시스템은 onStop() 콜백을 호출. 이는 예를 들어 새로 시작된 활동이 화면 전체를 차지할 경우에 적용. 시스템은 활동의 실행이 완료되어 종료될 시점에 onStop()을 호출할 수도 있습니다. onStop() 메서드에서는 앱이 사용자에게 보이지 않는 동안 앱은 필요하지 않은 리소스를 해제하거나 조정해야 함. 또한 onStop()을 사용하여 CPU를 비교적 많이 소모하는 종료 작업을 실행해야 함. 예를 들어 정보를 데이터베이스에 저장할 적절한 시기를 찾지 못했다면 onStop() 상태일 때 저장할 수 있음. 활동이 다시 시작되면 시스템은 onRestart()를 호출합니다. Activity가 실행을 종료하면 시스템은 onDestroy()를 호출

 

onDestroy()

액티비티가 종료될 때 호출되는 메소드로 활동이 소멸되기 전에 호출. 

  1. (사용자가 활동을 완전히 닫거나 활동에서 finish()가 호출되어) 활동이 종료되는 경우
  2. 구성 변경(예: 기기 회전 또는 멀티 윈도우 모드)으로 인해 시스템이 일시적으로 활동을 소멸시키는 경우

활동이 종료되는 경우 onDestroy()는 활동이 수신하는 마지막 수명 주기 콜백이 됨. 구성 변경으로 인해 onDestroy()가 호출되는 경우 시스템이 즉시 새 활동 인스턴스를 생성한 다음, 새로운 구성에서 그 새로운 인스턴스에 관해 onCreate()를 호출.

 

 

 

startActivity()

새로 시작된 활동이 결과를 반환할 필요가 없을 경우 현재 활동이 startActivity() 메서드를 호출하면 이를 시작할 수 있음.

SignInActivity라는 활동을 시작하는 방법 :

Intent intent = new Intent(this, SignInActivity.class);
startActivity(intent);

 

startActivityForResult()

활동이 종료될 때 결과를 반환받고자 할 수도 있음. 예를 들어 사용자가 연락처 목록에서 어떤 사람을 선택할 수 있도록 하는 활동을 시작할 수 있습니다. 이 활동이 종료되면 선택한 사람을 반환. 이렇게 하려면 startActivityForResult(Intent, int) 메서드를 호출해야 함. 이 메서드에서는 정수 매개변수가 호출을 식별. 결과는 onActivityResult(int, int, Intent) 메서드를 통해 반환.

 

 

'Android' 카테고리의 다른 글

[Android] onActivityResult  (1) 2021.03.12
[Android] URL Schemes(외부 스킴)  (0) 2021.03.12
[Android] setDisplayWindow()  (0) 2021.03.10
[Android] Context  (0) 2021.03.09
[Android] 내부저장소 & 외부저장소  (0) 2021.03.08