[안드로이드] Activity와 Fragment

변준영·2022년 11월 3일
0

1. Activity

1) Activity란

Activity은 애플리케이션의 사용자와 상호작용하는 화면을 제공하는 컴포넌트

2) Activity의 생명주기

onCreate

  • Activity를 생성할 때 실행
  • 필수적으로 구현해야 함
  • 전체 수명 주기 동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행
  • Activity가 ‘시작됨’ 상태로 들어 감

onStart

  • ‘시작됨’ 상태일 때 실행
  • Activity가 사용자에게 표시됨
  • Activity가 ‘재개됨’ 상태에 들어 감

onResume

  • ‘재개됨’ 상태에 들어갈 때 실행
  • 어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때까지 이 상태에 머무름
    -> 전화가 오거나, 다른 앱으로의 전환, 기기 화면이 꺼지는 이벤트 등
  • 방해되는 이벤트가 발생하면 Activity는 ‘일시중지됨’ 상태로 들어가고 onPause() 메소드 호출

onPause

  • 시스템이 사용자가 Activity를 떠나는 것을 나타내는 첫 번째 신호로 이 메소드를 호출
  • Activity가 ‘일시중지됨’ 상태일 때 계속 실행되어서는 안되지만 잠시 후 다시 시작할 작업을 일시중지하거나 조정함
    -> 멀티 윈도우 모드에서 포커스가 벗어난 경우
    -> 앱 실행을 방해하는 이벤트가 실행되는 경우

onStop

  • Activity가 사용자에게 더 이상 표시되지 않으면 ‘중단됨’ 상태에 들어가고 이 메소드를 호출
  • 이 메소드에서는 사용자에게 보이지 않는 동안 앱은 필요하지 않은 리소스르 해제하거나 조정해야 함
  • CPU를 비교적 많이 소모하는 종료 작업을 실행해야 함
    -> DB에 저장할 적절한 시기를 찾지 못했다면 onStop()상태일 때 저장
  • Activity가 다시 시작되면 onRestart()를 호출하고, Activity가 실행을 종료하면 onDestroy()를 호출

onDestroy

  • Activity가 완전히 소멸되기 전에 호출
    -> Finish()가 호출되어 활동이 종류되는 경우
    -> 구성 변경(기기 회전이나 멀티 윈도우모드)으로 인해 시스템이 일시적으로 Activity를 소멸시키는 경우
  • Activity가 다시 생성되지 않을경우 onCleared() 메소드를 호출하여 모든 데이터를 정리해야 함

2. Fragment

1) Fragment란

  • Fragment란 애플리케이션의 Activty내에서 UI의 일부
  • 여러 개의 fragment를 하나의 Activity에 구현 가능
  • 한 개의 Fragmenr를 여러 액티비에서 재사용 가능

2) Fragment의 생명주기

onAttach

  • 프래그먼트가 액티비티와 연결되어 있었던 경우 호출
  • 여기에서 Activity가 전달

onCreate

  • 프래그먼트를 생성할 때 시스템에서 호출
  • 구현 내에서 프래그먼트의 기본 구성 요소 중 일시정지되거나 중단되었다가 재개되었을 때 유지하고자 하는 것을 초기화 해야함

onCreateView

  • 프래그먼트 레이아웃의 루트
  • 프래그먼트와 연결된 뷰 계층을 생성하기 위해 호출
  • 프래그먼트에 맞는 UI를 그리려면 메서드에서 View를 반환해야 함
    -> 프래그먼트가 UI를 제공하지 않는 경우 null을 반환

onActivityCreated
액티비티의 onCreate() 메서드가 반환할 때 호출

onStart

  • 프래그먼트가 사용자에게 보일때 호출
  • 일반적으로 Activity의 onStart와 관련있음

onResume

  • 프래그먼트가 실행 중인 액티비티에 표시

onPause

  • 다른 액티비티가 포그라운드에 있고 포커스를 갖고 있지만, 이 프래그먼트가 있는 액티비티도 여전히 표시
    -> 포그라운드의 액티비티가 부분적으로 투명하거나 전체 화면을 뒤덮지 않습니다

onStop

  • 프래그먼트가 보이지 않음
  • 호스트 액티비티가 정지되었거나 프래그먼트가 액티비티에서 제거
    -> 백 스택에 추가
  • 정지된 프래그먼트도 여전히 표시
    -> 모든 상태 및 멤버 정보를 시스템이 보존
  • 사용자에게는 더 이상 표시되지 않음
  • 액티비티를 종료하면 종료

onDestroyView

  • 프래그먼트와 연결된 뷰 계층이 제거되는 중일 때 호출

onDetach

  • 프래그먼트가 액티비티와 연결이 끊어지는 중일 때 호출

참고
[Android Developer]
https://developer.android.com/guide/components/activities/intro-activities?hl=ko
https://developer.android.com/guide/components/fragments#java

0개의 댓글