Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

hong0708

Activity LifeCycle 본문

Android

Activity LifeCycle

hong0708 2023. 9. 27. 17:24

Activity 의 생명주기(LifeCycle)

생명주기는 액티비티가 시작하고 끝날 때까지의 과정으로 상태변화에 따라 콜백 메서드를 통합하여 명칭합니다. 이에 따라 메서드를 통해 생태 변화를 인지할 수 있고 이에 따른 대응과 문제 발생 시점 파악이 가능합니다.

  • onCreate()

최초로 액티비티 실행하면 onCreate() 호출되는데 초기화 관련 작업을 진행하면 좋습니다. Activity가 시작 될 때 한번만 실행되는 메소드로 데이터를 목록에 바인딩하고, 활동을 ViewModel과 연결등의 작업이 적합합니다.

 

 

  • onStart()

다음 onStart()가 호출되는데 사용자가 액티비티를 보기 전 호출되기 때문에 진입할 때마다 실행 시켜야하는 코드를 작성하기 적합합니다.

 

 

  • onResume()

액티비티가 사용자와 상호작용이 가능한 포그라운드에 위치하면 onResume()호출됩니다. 이 상태를 액티비티가 실행 중인 것으로 보며 화면상에 보이기 시작합니다. 다른 화면에서 돌아오는 경우에도 onResume()가 호출되니 갱신에 관한 작업을 진행하기 적합합니다. 하지만 이 때 수행시간이 길어지면 화면의 버벅임이 유발 될 수 있기 때문에 유의해야합니다.

 

 

  • onPause()

반대로 상호작용이 불가능한 상태, 즉 포커스를 잃은 상태가 되면 onPause()가 호출됩니다. 방해되는 이벤트가 발생하고 Activity의 일부는 보이지만 다른 Activity가 foreground로 나올 때 호출되는데 매우 잠깐 실행됩니다. 때문에 해당 메소드에서 작업시간이 긴 무거운 작업은 부적합합니다. (ex. 데이터를 저장하거나, 네트워크를 호출) 또, 현재 상태에서 기기의 메모리 부족으로 앱의 프로세스가 강제로 종료될 수 있습니다.

 

 

  • onStop()

onStop()은 액티비타가 더 이상 보이지 않을 때 호출됩니다. 또 onPause()에서 실행하지 못한 무거운 작업을 진행하기 적합합니다.

 

 

  • onRestart()

onRestart()는 다른 Activity에서 또는 홈에서 다시 돌아오는 경우 호출됩니다. 이후 onStart()를 통해 화면이 돌아옵니다.

 

 

  • onDestroy()

액티비티가 종료되거나 앱프로세스 자체가 종료되면 onDestroy()가 호출된다.

 

  • 특이사항

불투명한 액티비티가 최상단으로 올라와 기존의 액티비티가 완전히 보이지 않게 되면 onPause() onStop()까지 바로 호출되지만 투명한 액티비티가 실행된다면(액티비티의 스타일 속성이 투명하다고 선언만 되어 있어도 투명 액티비티로 간주) onPause()까지 호출됩니다.

만약 다이얼로그를 띄운다면 onPause()가 호출되어야 할 것 같지만 다이얼로그는 액티비티의 일부이기 때문에 아무런 함수가 호출되지 않습니다.

 

참고

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko