Android/Side Projects

당근 마켓 앱 개발하기

화요밍 2022. 2. 27. 19:35
728x90
반응형
Side Proeject - Carrot Market
중고 거래 앱 당근 마켓의 간단한 기능을 구현한 프로젝트

 

 

GitHub - hwayeon351/CarrotMarket

Contribute to hwayeon351/CarrotMarket development by creating an account on GitHub.

github.com


학습 회고

오늘은 중고 거래 앱 개발을 마치고 학습했던 Fragment에 대해 보충 공부를 하였다.


오늘 공부한 내용

  • Fragment와 Activity의 통신

Fragment는 FragmentActivity로부터 독립적인 객체로 구현되어 여러 개의 액티비티 안에서 사용할 수 있다.

그리고 프래그먼트 인스턴스는 해당 프래그먼트를 포함하고 있는 액티비티에 직접적으로 연결되어 있다.

따라서, 프래그먼트는 getActivity()를 사용해서 FragmentActivity 인스턴스에 접근할 수 있고 액티비티 레이아웃에서 뷰를 찾는 등의 작업을 수행할 수 있다.

val listView: View? = activity?.findViewById(R.id.list)

반대로 액티비티에서도 프래그먼트 안의 메서드를 호출할 수 있다.

Framgent Manager에서 Fragment에 대한 참조를 findFragmentById()나 findFragmentByTag()를 호출해서 가져올 수 있다.

val fragment = supportFragmentManager.findFragmentById(R.id.example_fragment) as ExampleFragment

 

 

  • Fragment 수명 주기 처리

액티비티 수명 주기가 프래그먼트 수명 주기에 미치는 영향

프래그먼트의 수명 주기를 관리하는 것과 액티비티의 수명 주기를 관리하는 것은 매우 유사하다.

프래그먼트의 수명 주기 중 세 가지 상태에 대해 알아보자.

  • Resumed

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

 

  • Paused

다른 액티비티가 포그라운드에 있고 포커스를 가지고 있으며, 호스트 액티비티도 여전히 표시되고 있는 상태이다.

 

  • Stopped

프래그먼트가 보이지 않는 상태이다. 호스트 액티비티가 정지되었거나 프래그먼트가 액티비티에서 제거되었지만 백 스택에 추가된 상태이다. 사용자에게 프래그먼트는 표시되지 않으며 액티비티를 종료하면 프래그먼트도 종료된다.

 

액티비티와 프래그먼트 수명 주기의 큰 차이점은 백 스택에 저장되는 방법이다.

액티비티는 정지되면 기본적으로 시스템에서 관리하는 액티비티의 백 스택에 들어간다.

하지만 프래그먼트는 프래그먼트를 제거하는 트랜잭션에서 addToBackStack()을 호출해서 인스턴스를 저장하라고 명시적으로 요청할 경우에만 호스트 액티비티에서 관리하는 백 스택으로 들어간다.

 

이외에는 액티비티의 수명 주기를 관리하는 것과 프래그먼트 수명 주기를 관리하는 것은 아주 비슷하다.

호스트 액티비티의 수명 주기는 프래그먼트의 수명 주기에 직접적인 영향을 미친다.

따라서 액티비티에 대한 각 수명 주기 콜백이 각 프래그먼트에 비슷한 콜백을 발생시킨다.

액티비티가 onPause()를 받으면, 해당 액티비티 내의 각 프래그먼트가 onPause()를 받는다.

 

프래그먼트에는 프래그먼트의 UI를 빌드하고 소멸시키는 등과 같은 작업을 수행하기 위해서 액티비티와의 고유한 상호작용을 처리하는 몇 가지 수명 주기 콜백이 있다.

  • onAttach()

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

 

  • onCreateView()

프래그먼트와 연결된 뷰 계층을 생성하기 위해 호출된다.

 

  • onActivityCreated()

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

 

  • onDestroyView()

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

 

  • onDetach()

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

 

 

 

https://developer.android.com/guide/components/fragments?hl=ko#kotlin 

 

프래그먼트  |  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

 

 

\

728x90
반응형

'Android > Side Projects' 카테고리의 다른 글

Youtube 앱 개발하기  (0) 2022.03.01
Youtube 앱 개발하기  (0) 2022.02.28
Airbnb 앱 개발하기  (0) 2022.02.26
Airbnb 앱 개발하기  (0) 2022.02.25
Airbnb 앱 개발하기  (0) 2022.02.24