관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[안드로이드] 생명주기 (LifeCycle) 간단 정리 본문

안드로이드

[안드로이드] 생명주기 (LifeCycle) 간단 정리

막무가내막내 2019. 3. 25. 03:11
728x90


안드로이드 생명죽에 대한 이미지 검색결과

참고 : https://www.youtube.com/watch?v=49N59HnCAxQ


안드로이드의 액티비티 생명주기에 대해 간단하게 정리해보겠다.


먼저 파란배경의 launched는 아이콘을 눌러 액티비티가 나오게되는 시점이다.


OnCreate()는 생성자랑 비슷하다고 생각하면된다. 처음에 액티비티가 생성되었을 때 나온다.


OnStart()는 말그대로 액티비티가 시작되기 직전이라 생각하면된다. OnCreate()와 OnResume() 사이의 순서에 있다.


OnResume()은 OnStart와 비슷한데 이제 액티비티가 뜨고 동작하기 완전 직전에 실행 된다. OnStart보다 액티비티가 실행되기 더 직전에 가깝다.
(onPause에서 sharedpreferences에 임시저장된 데이터를 불러오는데 주로 사용된다.)


OnCreate=>OnStart=>OnResume은티비티가 실행되기 전에 차례대로 실행되는 순서라고 생각하면 이해하기가 쉬웠다.


OnPause()부터는 액티비티가 실행상태인 이후의 생명주기들인데 화면이 가려지기 직전에  onPause()가 호출된다. 그리고 만약 해당 앱을 종료하거나 현재 액티비티(화면)이 다른 화면에 의해 완전히 가려져 안보이게되어 백그라운드에 있는 상태 등은 onStop()이나 onDestory()까지 차례로 호출된다. 좀더 자세히 말하면 다음과 같다.


즉,
1. 현재화면 액티비티가 아직 완전히 가려지지않으면 onPause(),
2. 다른 액티비티가 위로 올라오면서 현재화면이 다가려지면(완전히 뒤로 들어가서 원래 액티비티가 백background에 있는 경우) onPause()->onStop() ==>다시 복구되면 onRestart()->onStart()
3. 아예 종료되거나 뒤로가기등으로 없어지면 onPause()->onStop->onDestory()
이런식으로 진행되는 거라고 보면 될 거 같다.


추가적으로 onPause()는 데이터를 저장하는데 주로 사용된다.
예를들어 게임을 하고있다가 중간에 전화가오거나 멈춰진 경우 전화가 끝나고 게임을 시작하면 게임이 원래 하던곳부터 계속 진행될수 있어야 할 것이다.
그런 경우 onPause()에서 현재의 데이터들을 sharedpreferences를 사용하여 저장해놓고 다시 앱을 진행했을때 복원 할 수 있게 onResume()에서 저장한 데이터들을 복원해 진행시킬 수 있다.


+) 추가적으로 데이터를 저장하는데 onSaveInstanceState() , onRestoreInstanceState()를 사용하는 방법도 있는데 화면전환할때 데이터 유지에도 유용하다.
자세한건 다음 사이트를 참고바란다.
https://developer.android.com/training/basics/activity-lifecycle/recreating.html?hl=ko&refresh=1




OnStop은 우리가 쓰던 액티비티가 완전히 이제 뒤로가서 안보일 때 호출되는 메소드이다. 그런데 OnStop인 상태일때 앱을 다시 킬수도 있는데 그런 경우 OnRestart()를 거쳐 onStart 생명주기로 다시 넘어간다. 참고로 onStop은 아직 액티비티가 소멸된 상태는 아니다.


추가로 하나 예를 더 들면 액티비티를 사용중에 홈버튼을 눌렀을 경우 onPasue와 OnStop이 순서대로 호출될 것이다. 그리고 다시 앱이 종료되지 않았으므로 앱을 다시 키면 원래 액티비티가 뜰건데 이때 onRestart와 onStart 가 호출된다.
그리고 만약 뒤로가기로 앱을 끄면 OnPasue->OnStop->OnDestory 순서로 호출될거고 다시 종료된 앱을 키면 OnCreate() 부터 호출된다.


OnDestory는 액티비티를 더이상 쓰지 않을 경우 액티비티를 종료했을 때 호출된다. 이 이후에 액티비티를 다시실행시키면 onCreate() 부터 진행될 것이다.


즉 OnPause=>OnStop=>OnDestory 도 위에서 말한거와 마찬가지로 액티비티가 실행되고 이후의 생명주기 순서라고 보면된다. 다만 어느정도 액티비티가 가려지느냐 없어지느냐로 판단하면 쉽게 이해 할 수 있을거 같다.


이 생명주기 그림은 중요하므로 꼭 외우고 이해하도록 해야한다.




-------------------------------------------------






밑 사진과 같은 자세하고 더 정확한 설명은 다음 사이트를 참고바란다.
출처 : https://developer.android.com/guide/components/activities?hl=ko









728x90
Comments