천천히 , 강하게 멀리

안드로이드 생명주기. 본문

interview/Android

안드로이드 생명주기.

힌새 2020. 4. 23. 17:48

 

## 안드로이드 생명주기에 대해 설명해보세요.
 
 
액티비티는 크게 3가지 상태가 존재합니다.
먼저 실행(running) 상태는 액티비티 스택의 최상위에 있으며 포커스를 가지고 있어 사용자에게 보이는 상태입니다.
다음으로 일시 중지(paused) 상태는 사용자에게 보이기는 하지만 다른 액티비티가 위에 있어 포커스를 받지 못하는 상태를 말합니다.
예를들어 대화상자가 위에 있어 일부가 가려져 있는 경우를 말합니다.
마지막으로 중지 (stopped) 상태는 다른 액티비티에 의해 완전히 가려져 보이지 않는 상태를 말합니다.
액티비티가 처음 만들어지면 onCreate 메소드가 호출되어 레이아웃을 구성합니다.
이후 onStart 메소드가 화면에 보이기 직전에 호출됩니다. 다음으로 onResume 메소드가 사용자 상호작용(화면이 포커스를 얻었을 때)하기 바로 전에 호출됩니다.
이 3가지 메소드가 호출되어 액티비티는 실행 상태를 갖게됩니다. 이후 포커스를 잃었을 때 onPause 메소드가 호출되고 일시 중지 상태가 됩니다.
일시 중지 상태에서 다시 포커스를 획득하면 onResume 메소드가 호출되거나 다른 액티비티에 의해서 완전히 화면이 가려졌는지 여부를 확인하여 가려져 보이지 않는 경우 onStop 메소드가 호출되어 중지 상태가됩니다.
정지 상태에서 다시 화면이 보이기 직전에 onRestart 메소드가 호출되고 onStart 메소드가 차례로 호출됩니다. 그 외 finish 메소드가 실행되어 해당 액티비티가 종료되기 직전에 onDestroy 메소드가 실행됩니다.
가끔은 일시 중지나 중지 상태에서 시스템이 메모리가 부족하다고 판단될 경우 onCreate 메소드부터 다시 해당 액티비티를 구동합니다.
이 경우 onStop, onResume 메소드 호출이 생략됩니다.
따라서 onSaveInstanceState, onRestoreInstanceState 메소드를 이용하여 액티비티가 갑자기 죽을 것을 대비해서 상태를 저장하고 복원하기 위한 작업을 정의해줄 수 있습니다.
 
Q. 앱을 사용하는 도중에 카카오톡 메세지가 온다면 사용하던 앱의 TopActivity의 생명주기는 어떤 상태가 되나?
 
A. onPause()
 
Q. 데이터를 불러오는 작업은 어디서 해야하나?
 
A. 기본적으로 onCreate()
 
추가적으로 볼 것 : When exactly are onSaveInstanceState() and onRestoreInstanceState() called?
 
Q. 다른 액티비티가 상단에 올라오면 어떤 상태인가?
 
A. 실행중이던 액티비티는 onPause() - onStop()
 
Q. onRestart는 언제 호출 되나?
 
A. (다른 액티비티에 깔려서) onStop 상태에 있다가 다시 돌아오면 호출
 
Q. 화면이 회전하면?
 
A. onPause() - onStop() - onDestroy() - onCreate() - onStart() - onResume().
현재 액티비티를 destroy 하고 새로 생성하기 때문에,
기존 데이터를 유지하기 위해서는 onSaveInstanceState()에서 Bundle에 데이터를 저장하도록 오버라이드해야한다.

'interview > Android' 카테고리의 다른 글

안드로이드 4대 컴포넌트  (0) 2020.04.23
Call by Reference vs Call by Value in Kotlin  (0) 2020.04.23
변수(var) vs 상수(val) in Kotlin  (0) 2020.04.23