📌 생명주기 테스트
생명주기를 여러 번 공부해왔고, 실전에서도 많이 사용해보았지만, 내 자신에게 '생명주기에 대해서 낱낱히 설명해 봐!' 라고 묻는다면, 늘 새로운 기분이 든다. 오늘은 약간이라도 애매한 부분을 확신으로 바꾸기 위하여 생명주기 테스트 프로젝트를 만들어 보기로 하였다
🧩 Test Case
- A Activity → B Activity → A Activity
- A Activity → Transparent Activity (배경이 투명한 투명 액티비티) → A Activity
- A Activity → B Activity → B Activity (singleTop)
테스트를 하는 생명주기들
enum class LifeCycleEx{
CREATE,
RESTART,
START,
RESUME,
PAUSE,
STOP,
DESTROY,,
NEWINTENT
}
📍A Activity → B Activity → A Activity
A Activity 시작 !!
A Activity: CREATE
A Activity: START
A Activity: RESUME
A : 화면이 호출되어 UI를 inflate해야하므로 CREATE
화면이 시작되기 직전 START 호출
화면이 시작되어 전면에 나타날 때 RESUME
B Activity 시작 !!
A Activity: PAUSE
B Activity: CREATE
B Activity: START
B Activity: RESUME
A Activity: STOP
A : 화면이 바뀌는 동안 유저와 상호작용 불가능하므로 PAUSE
B : 화면이 호출되어 UI를 inflate해야하므로 CREATE
화면이 시작되기 직전 START 호출
화면이 시작되어 전면에 나타날 때 RESUME
A : B의 화면이 나타나 자신은 후면으로 갔기 때문에 STOP
B Activity 뒤로 가기 키 터치 !!
B Activity: PAUSE
A Activity: RESTART
A Activity: START
A Activity: RESUME
B Activity: STOP
B Activity: DESTROY
B : 화면이 바뀌는 동안 유저와 상호작용 불가능하므로 PAUSE
A : 기존의 화면이 다시 전면에 나오는 것이므로 RESTART 호출
화면이 시작되기 직전 START 호출
화면이 시작되어 전면에 나타날 때 RESUME
B : B의 화면이 나타나 자신은 후면으로 갔기 때문에 STOP
뒤로가기 키가 호출하는 finish로 시작되었기 때문에 DESTORY 호출
📍A Activity → Transparent Activity (배경이 투명한 투명 액티비티) → A Activity
Transparent Activity 시작 !!
A Activity: PAUSE
Transparent Activity: CREATE
Transparent Activity: START
Transparent Activity: RESUME
A : 화면이 바뀌는 동안 유저와 상호작용 불가능하므로 PAUSE
Transparent : 화면이 호출되어 UI를 inflate해야하므로 CREATE
화면이 시작되기 직전 START 호출
화면이 시작되어 전면에 나타날 때 RESUME
(A : Transparent의 화면이 나타났으나 자신은 후면으로 가지 않았으므로 STOP 호출 X!)
Transparent Activity 뒤로 가기 키 터치 !!
Transparent Activity: PAUSE
A Activity: RESUME
Transparent Activity: STOP
Transparent Activity: DESTROY
..?! 솔직히 조금 놀랐으나, 6개의 생명주기는 대칭적으로 생각해야 하기에 수긍이 가는 부분. 그러나 진짜 놀랍긴했다
Transparent : 화면이 바뀌는 동안 유저와 상호작용 불가능하므로 PAUSE
A : 화면이 후면에 들어간 적이 없어 STOP이 호출된 적이 없으므로 이와 대칭되는 START 또한 불리지 않음
다시 유저와 상호작용 할 수 있으므로 RESUME 호출
Transparent : B의 화면이 나타나 자신은 후면으로 갔기 때문에 STOP
뒤로가기 키가 호출하는 finish로 시작되었기 때문에 DESTORY 호출
📍A Activity → B Activity → B Activity (singleTop)
B Activity 시작 !!
A Activity: PAUSE
B Activity: CREATE
B Activity: START
B Activity: RESUME
A Activity: STOP
A : 화면이 바뀌는 동안 유저와 상호작용 불가능하므로 PAUSE
B : 화면이 호출되어 UI를 inflate해야하므로 CREATE
화면이 시작되기 직전 START 호출
화면이 시작되어 전면에 나타날 때 RESUME
A : B의 화면이 나타나 자신은 후면으로 갔기 때문에 STOP
또다시 B Activity 시작 !!
B Activity: PAUSE
B Activity: NEWINTENT
B Activity: RESUME
B : 화면이 바뀌는 동안 유저와 상호작용 불가능하므로 PAUSE
singleTop이라 방금의 자신이 재사용되어 NEWINTENT 호출
다시 유저와 상호작용이 가능하므로 RESUME
📚정리
사실 중요한 것은 경우에 따른 테스트보다는 생명주기 각각을 자세히 알고 있어야한다는 것이다.
또한 생명주기는 대칭구조로 알아두는 것이 편하고, 확실히 이해하기에도 좋다는 생각이 든다.
그저 가끔 복기하는 용도로 몇몇 경우를 더 추가하긴 해보아야 겠다.
'Android' 카테고리의 다른 글
제로메모 - 간편한 메모, 할 일 관리 앱이 출시되었습니다. (0) | 2020.10.22 |
---|---|
[Android] SingleLiveEvent의 원리 (2) | 2020.02.04 |
[Android] Activity 좌우로 전환 애니메이션 적용하기 (0) | 2020.01.08 |
[Android] What is LiveData (0) | 2019.11.22 |
[Android/안드로이드] 구글 퓨시아(fuchsia) 개발자 사이트 (0) | 2019.10.08 |