선생님, 개발을 잘하고 싶어요.

[잡학] 액티비티 라이프 사이클, 프래그먼트 라이프 사이클 케이스 정리하기 본문

개발/android 개발

[잡학] 액티비티 라이프 사이클, 프래그먼트 라이프 사이클 케이스 정리하기

알고싶은 승민 2020. 3. 8. 17:26

도입

사실 화면 하나의 라이프 사이클은 어려울 것이 없다. 하지만 화면 두개 이상이 결합된 라이프 사이클은 조금 햇갈리는 경우가 많다.

  • A화면에서 B화면으로 이동 할 땐 어떤 일이 일어나지?
  • 뒤로가기를 누르면 어떤 일이 일어나지?
  • A 액티비티와 A 프래그먼트의 관계가 어떻지?

그래서 그냥 한 번에 쭉 로그 찍어서 정리해 놓고 나중에 참조해보자. (그냥 실험 기록장 같은 거라 별 내용은 없다.)

 

안드로이드 액티비티 라이프 사이클

 

Activity 수명 주기에 대한 이해  |  Android 개발자  |  Android Developers

An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface…

developer.android.com

 

안드로이드 프래그먼트 라이프 사이클

 

프래그먼트  |  Android 개발자  |  Android Developers

A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section…

developer.android.com

케이스 분류

Activity 하나 켜고 끄는 것

Activity 하나 켜고, 시스템 백 트레이

MainActivity 에서 ToActivity 로

ToActivity 에서 MainActivty 로, 뒤로 가기를 누를 때 ("startActivity")

 

ToActivity 에서 MainActivty 로, 뒤로 가기를 누를 때 ("startActivityForResult")

 

생각보다 onActivityResult 의 호출 시점이 앞이다.

 

MainActivity 에서 MainFragment 를 로드 할 때

MainFragment 가 있는 MainActivity 를 종료할 때

MainFragment 가 있는 MainActivity 에서 ToActivity 로 이동 할 때

해당 ToActivity 에서 MainActivity 로 돌아 갈 때 (Backpressed)

 

프래그먼트의 생명주기는 MainActivity 위의 스택에 MainFragment 가 있는 것과 마찬가지로 동작한다.

결론

이번 포스팅 정리를 통해서 생명 주기에 대해서 좀더 자세히 파악할 수 있었다.

두 화면간 생명 주기의 변화가 내가 맨 처음 막연히 생각한 것과 달랐다. 그래도 정리하고 보니 뭔가 논리적으로 납득가기도 하고? 일단 애매한 상황의 생명 주기는 이정도로 정리 마무리 하자.

Comments