Activity Fragment 차이점

박영호·2023년 5월 11일

액티비티(Activity)의 경우 독립적으로 존재할 수 있는데 프래그먼트(Fragment)는 독립적으로 존재할 수 없으며 Activity안에 정의 되어야한다. Activity는 전체적인 화면을 구성하지만 Fragment는 전체적으로 구성하지 않아도 되며, 디자인 측면에서 많은 유연성을 가지고 있다. Activity는 자동적으로 스택에 넣어지고 Fragment는 트랜잭션을 통해서 요청해야 한다.

Activity 수명 주기

  • onCreate() : 필수적으로 구현을 해야하며 시스템이 Activity를 생성할때 실행 Activity는 생성되면서 create 상태이다. onCreate에서는 주로 데이터 바인딩을 하거나 Activity와 viewModel을 연결한다. Activity LifeCycle동안 단 한번만 실행된다.
  • onStart() : Activity가 사용자에게 표시되는 단계이며, 앱이 Activity를 포그라운드에 보내 사용자와 상호작용할 준비를 한다. 빠르게 완료되며 완료되면 onResume()함수를 호출한다.
  • onResume() : Activity는 포그라운드에 표시되며 앱이 사용자와 상호작용 한다. 앱의 포커스가 사라지기 전까진 앱은 이 상태에 머무른다. 방해가 되는 이벤트가 발생하면 일시중지 상태에 들어가고, 시스템이 onPause()를 호출한다. (예: 전화가 오거나, 사용자가 다른 화면으로 이동하거나, 기기 화면이 off될 때)
  • onPause() : 사용자가 Activity를 떠나면 앱은 onPause()를 호출한다. 떠난것이 Activity가 소멸되었다는 뜻은 아니다. 시스템 리소스, 센서 핸들(GPS), 사용자가 필요로 하지 않을 때 배터리 수명에 영향을 미칠 수 있는 모든 리소스를 해제할 수도 있다. onPause는 잠깐 실행되기 때문에 저장작업의 경우는 onStop()에서 실행한다.
  • onStop() : Activity가 더이상 사용자에게 표시되지 않으면 앱은 onStop()을 호출한다. 앱이 사용자에게 보이지 않는 동안 앱이 필요하지 않는 리소스를 해제하거나 조정해야 한다. onStop내에서 CPU를 많이 소모하는 작업들을 종료해야한다. 이거또한 Activity가 완전히 종료된 상태는 아니다.
  • onDestroy() : Activity가 완전히 소멸되기 전에 onDestroy()를 호출한다.
    Activity가 완전히 닫히거나 finish()가 호출된 경우
    구성 변경(예: 기기회전 또는 멀티 윈도우모드)으로 인해 시스템이 일시적으로 활동을 소멸시키는 경우
    onStop에서 해체되지 않은 리소스들을 해체해야한다.
  • onRestart() : onStop상태에 있던 화면이 다시 접근 했을 때 호출되는 콜백함수

Fragment 수명 주기

  • CREATED : Fragment의 생명 주기가 CREATED 상태이면 이미 onAttach()를 통해 FragmentManager에 추가된 상태이다. 이 상태에서 데이터를 초기화, 복구하거나 저장된 상태를 불러온다.
  • STARTED : Fragment안에 있는 View를 사용할 수 있는 상태이다.
  • RESUMED : Activity와 마찬가지로 사용자와 Fragment가 상호작용하는 단계이다.
  • STARTED : Fragment의 onPause()를 호출하는 단계이다. 사용자로부터 Fragment의 포커스를 잃은 상태이다.
  • CREATED : 더 이상 Fragment가 포그라운드에서 보이지 않는 상태이다.
  • DESTROYED : Fragment가 FragmentManager로 부터 onDetach()되어 소멸하게 된다.
profile
무언가에 호기심이 생기면 적극적이고 재밌게 그걸 해결해내고 싶어하는 프론트 엔드 개발자 입니다 .

0개의 댓글