지원자 95%가 틀리는 startActivity()라이프사이클, 당신도 예외는 아닙니다

Ted Park
박상권의 삽질블로그
5 min readJan 16, 2020

모두가 잘 알고 있다고 생각하지만 모두가 잘 틀리는 질문입니다
메모장이나 노트를 미리 준비해서 예상해보고 실제답과 비교해보세요

안드로이드에서 Activity의 라이프사이클에 대한 이해는 중요합니다.

안드로이드 개발을 가장 처음 배울때도 중요했으며
11년째 개발하고 있는 지금도 라이프사이클이 중요하다고 생각합니다.

위의 이미지는 지금까지 안드로이드 개발을 하면서 수도없이 봐왔던 라이프사이클 이미지일것입니다.

누구나 알고 있다고 생각하지만 누구도 잘 모르는 Activity의 라이프사이클에 대해서 이야기 해보려고 합니다.

지금까지 여러 회사와 멘토링 프로그램, 행사등에서
면접관으로 여러 지원자들에게 질문을 던졌을때 이 질문에 대해서 맞춘 사람은 단 2명이었습니다.😱

사실 95%인지 아닌지 통계를 내보지는 않았습니다. 제 뇌피셜입니다.
(확인불가, 검증불가, 신뢰불가)

심지어 5년차이상의 경험이 풍부한 개발자분들과 이야기하면서 이 질문에 대해서 이야기를 나누었을때 제대로 답하신분은 많지 않았습니다.👩🏻‍💻 👨🏻‍💻

질문1

Main Activity에서 Detail Activity를 호출했을때

라이프사이클이 호출되는 순서를 나열해보세요

여기서 말하는 라이프사이클은 onCreate(), onStart(), onPause() 등을 말합니다.

지금 이 글을 읽으면서 메모장이나 노트를 펼쳐서 위의 질문에 대한 답을 작성해보세요.📝📝

.

.

.

.

.

.

.

.

.

❌ 가장 많이 답변하지만 틀리는 라이프사이클 순서는 아래와 같습니다.

  • [Main]onPause()
  • [Main]onStop()
  • [Detail]onCreate()
  • [Detail]onStart()
  • [Detail]onResume()

하지만 실제로 그럴까요?

샘플 프로젝트를 돌려보시면 확실하게 아실 수 있습니다.

.

.

.

.

.

.

.

.

.

⭕️ 실제 라이프사이클의 호출순서는 아래와 같습니다.

어때요? 예상하신대로 맞았나요?

Main의 onStop()은 예상과는 달리 Detail의 라이프사이클관련 작업이 끝나고나서 호출되게 됩니다.

질문2

좋습니다. 이번에는 반대입니다.

Detail Activity 종료후 다시 Main Activity가 보여질때

라이프사이클이 호출되는 순서를 나열해보세요

이번에도 어딘가에 예상되는 순서를 작성해보세요.📝📝

.

.

.

.

.

.

.

.

.

어때요? 예상하신대로 잘 맞았나요?

대부분 Detail의 종료관련 라이프사이클이 끝난뒤 Main의 보여지는 라이프사이클이 호출될것이라고 예상하지만 실제로는 그렇지 않습니다.

그리고 onRestart() 라는 생각못했던 복병 라이프사이클이 등장합니다.

이 사실을 알게된 대부분의 개발자들은 충격😰 과 공포😱를 느끼게 됩니다.

그만큼 당연히 알고있다고 생각한 것들이 실제로는 그렇지 않은것들이 많습니다.
내가 알고 있다고 생각하는 그것이 틀릴수도 있습니다.

당연히 틀리고 모를 수 있습니다. 지금부터 알면 됩니다.
항상 안드로이드 개발자분들의 개발과 열정을 응원합니다.

다음번에도 충격과 공포의 알쓸신잡 포스팅으로 돌아오겠습니다.😀

피쓰!

이번에 ‘클린 아키텍처’를 주제로 온라인 강의를 개설하게 되었습니다 🎉

평소 오픈채팅방이나 여러 커뮤니티에서 ‘클린 아키텍처’와 관련된 질문들이 많았는데요.
이를 해결해줄 수 있는 마땅한 강의가 없었던것 같습니다.

평소 ‘클린 아키텍처’ 에 대한 궁금증이나 관심이 있으셨던 분들이 수강해보시면 도움이 될것 같아요.

https://bit.ly/ted-clean-architecture-blog

안드로이드 개발자들이 모여있는 오픈채팅방에 참여해보세요.
Q&A 및 팁을 공유하는 방입니다.

--

--