Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Gone
- Regex
- 4대컴포넌트
- Var
- ExoPlayer2
- 상수
- 유효성 검사
- 회원가입
- 비밀번호
- 자바
- ExoPlayer
- Visible
- 생명주기
- SharedPreference
- 전체화면
- 면접준비
- invisible
- call by reference
- 휴대전화
- 핸드폰번호
- 변수
- FullScreen
- Kotlin
- 버튼 투명화
- 안드로이드
- Button
- Android
- Val
- call by value
- 코틀린
Archives
- Today
- Total
천천히 , 강하게 멀리
안드로이드 생명주기. 본문
## 안드로이드 생명주기에 대해 설명해보세요. |
액티비티는 크게 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 |