안드로이드에서 LifeCycle 페어라고 하면 생각나는 것들이 있으시지요.

대표적으로는 onCreate과 onDestroy입니다.

안드로이드를 처음 배우기 시작하면,

onCreate에서 변수에 담은 것들을

 onDestroy에서 release해 주라고 배웁니다.

 

오늘은 이러한 페어들의 특징과 대응 방법에 대해서 정리해 보도록 하겠습니다.

 

1. onCreate 과 onDestroy

Actvity가 시작해서 끝날때까지를,

onCreate 그리고 onDestroy와 함께 합니다.

따라서, onCreate에서 global한 setup등을 해주고, onDestroy에서 해지 해주는 것이지요.

 

 

2. onStart 와 onStop

이 두 페어는 Activity가 유저에게 보이는 동안(Visible) 함께합니다.

대신 유저가 터치등 인터랙션이 가능하지 않거나 foreground에 있지 않을 수 있습니다.

흔히 onResume과 onPause가 그렇다고 생각하는 분들도 있을 수 있는데요.

아래에서 다루겠지만 그렇지 않습니다.

Broadcast Receiver를 등록했다가 해지하는 과업이나,

Service에 Bind했다가 unbind하는 과업은,

onStart로 시작해 onStop으로 끝나는 시점에 하는 것이 좋습니다.

유저가 액티비티를 보고 있다는 것을 보장 받을 수 있기 때문입니다.

 

3. onResume 과 onPause

onResume과 onPause는 매우

이곳에 들어가는 코드는 가벼워야 합니다.

onStart다음에 onResume이 호출되는데요.

가장 큰 차이는 onResume시에는 유저와 인터랙션이 가능하다는 점 입니다.

버튼을 누르거나 토스트를 보여주거나 하는 것이 가능하지요.

 

대신 onResume과 onPause는 매우 자주 호출되므로,

여기에 무거운 과업의 코드를 넣으면 않됩니다.

 

유저와 인터랙션이 필요한 요소같은 경우는,

onResume에 넣어주어야 정상적으로 동작을 보장받을 수 있으므로,

여기에 넣어 주어야 합니다.

 

4. 주의할 점

언제나 그렇듯이 예상하지 못하는 경우는 언제나 발생할 수 있습니다.

메모리가 leak되거나 혹은 어떤 사유로,

안드로이드 시스템이 앱을 갑자기 off시켜버릴 수 있습니다.

그러한 경우에 대해서도, 앱을 퍼블리싱해서,

Bug Report를 받다보면 발견되는데요.

항상 완벽한 사이클로 돌아가지는 않는다는 것을 염두해 두어야 겠습니다.

 

 

+ Recent posts