일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Self
- ios
- 구조체
- 프로퍼티
- weak
- 옵셔널
- 백준
- 자바
- 프로그래머스
- 차이
- View
- RxSwift
- Subject
- 연산자
- 클로저
- 해시
- 생명주기
- Swift
- 이스케이핑
- concurrency
- 풀이
- observable
- 알고리즘
- rx
- noncopyable
- 리스트뷰
- 스위프트
- 안드로이드
- 프래그먼트
- async
- Today
- Total
study record
[안드로이드] 프래그먼트 생명주기(Fragment LifeCycle) 본문
1. onAttach()
- 프래그먼트가 액티비티에 붙을 때 호출된다.
- 아직 프래그먼트가 완벽하게 생성된 상태는 아니며, 인자로 context가 주어진다.
2. onCreate()
- 액티비티와 마찬가지로 초기화해야하는 리소스들을 여기서 초기화한다.
- 프래그먼트를 생성하면서 넘겨준 값들이 있다면, 여기서 변수에 넣어주면 된다.
- 하지만 여기서 UI는 초기화 할 수 없다.
- 본격적으로 프래그먼트가 액티비티에 호출을 받아 생성되는 시점이다.
- 액티비티의 onCreate()에선 view나 ui관련 작업을 할 수 있으나, 프래그먼트의 onCreate()에서는 할 수 없다. 대신 다음에 호출될 onCreateView()에서 ui관련 작업을 할 수 있다.
3. onCreateView()
- 레이아웃을 인플레이트(inflate)하는 곳이다.
- View 객체를 얻을 수 있으므로, 버튼이나 텍스트뷰 등을 초기화 할 수 있다.
- 프래그먼트가 자신의 인터페이스를 처음 그리기 위해 호출한다.
- View를 반환해야 한다. 이 메서드는 프래그먼트의 레이아웃 루트이기 때문에 UI를 제공하지 않는 경우에는 null을 반환하면 된다.
- 프래그먼트에 속한 각종 view나 viewGroup에 대한 ui 바인딩 작업을 할 수 있다. (Layout을 inflater하여 View작업을 한다.)
- fragment에서 UI를 그릴 때 호출되는 콜백이다.
- onCreateView의 매개변수로 전달되는 container가 Activity의 ViewGroup이며, 여기에 Fragment가 위치하게 된다.
- 또 다른 매개변수인 savedInstanceState는 Bundle 객체로 Fragment가 재개되는 경우 이전 상태에 대한 데이터를 제공한다.
4. onActivityCreated()
- 프래그먼트에서 onCreateView를 마치고 액티비티에서 onCreate가 호출되고 나서 호출되는 함수.
- 액티비티와 프래그먼트의 뷰가 모두 생성된 상태로, View를 변경하는 작업이 가능한 단계이다.
- 액티비티에서 프래그먼트를 모두 생성하고 난 다음에 호출된다.
- 액티비티와 프래그먼트가 드디어 연결되는 시점이다.
- Activity와 Fragment의 뷰가 모두 생성되고, 연결된 상태이다.
5. onStart()
- 프래그먼트가 사용자에게 보여지기 전에 호출되는 함수
- 유저에게 프래그먼트가 보이도록 해준다.
- Activity와 같이 Fragment가 화면에 보여지기 직전 빠르게 실행된다.
- 여기서 Activity는 시작됨 상태이다.
6. onResume()
- 프래그먼트가 비로소 화면에 보여지는 단계이다.
- 사용자에게 포커스를 잡은 상태로 사용자와의 상호작용이 가능하다.
- Activity와 마찬가지로 이벤트가 발생하여 Fragment가 가려지기 전까지 이 상태가 유지된다.
7. onPause()
- 프래그먼트는 사용자와의 상호작용을 중지한다.
- 부모 Activity가 아닌 다른 Activity가 위로 올라오거나, 다른 Fragment가 add되는 경우 일시정지 상태로 들어간다.
- UI관련 처리를 정지하고, 중요한 데이터를 저장한다.
8. onStop()
- 프래그먼트는 더이상 보여지지 않게되며, 프래그먼트 기능이 중지된다.
- Fragment가 완전히 가려지는 경우, onPause()에 이어 onStop()까지 실행된다.
- 시스템에서 onStateInstance()를 호출하여 UI의 상태를 저장하므로 Activity를 다시 띄우면 이전 상태가 그대로 보여진다.
9. onDestroyView()
- Fragment와 관련된 view가 제거될 때 실행된다.
- Activity에서 Fragment 생성 시 addToBackStack()를 요청했을 경우 onDestroy()를 호출하지 않고 인스턴스가 저장되어 있다가 Fragment를 다시 부를 때 onCreateView()를 실행하여 다시 화면에 보여지게 한다.
10. onDestroy()
- view가 제거된 후 Fragment가 완전히 소멸되기 전에 호출된다.
11. onDetach()
- Fragment가 완전히 소멸되고, Activity와의 연결도 끊어질 때 실행된다.
참고블로그:
[안드로이드] Fragment 생명주기 ― Activity 생명주기와의 관계
Fragment Lifecycle 왼쪽은 Fragment의 Lifecycle, 프래그먼트 수명주기입니다. 생명 주기는 Android 작동 방식의 핵심으로, 생명 주기를 준수하지 않으면 메모리 누출 또는 애플리케이션의 비정상 종료가 발
ddangeun.tistory.com
Fragment란? (+Fragment의 생명주기)
Fragment는 Activity의 개념과 View의 개념이 합쳐진 것이라고 비유할 수 있습니다. * View : Activity 위에 놓이는 Layout이나 Button같은 그림으로 비유 * Activity : View를 올릴 수 있는 도화지로 비유 * Fr..
beenii.tistory.com
[Android] Fragment 생명주기
실무에서 안드로이드앱을 만들 때 내가 만든 앱은 전부다 하나의 액티비티에 다수의 프래그먼트 물리는 구조를 많이 선택했다. 처음에는 다이렉트로 Context를 프래그먼트에서 불러오지 못하고,
limkydev.tistory.com
[Android] 안드로이드 Activity와 Fragment의 생명주기
Activity의 LifeCycle 안드로이드 앱은 여러개의 액티비티가 연결되어있는 구조라고 볼 수 있고, 각 액티비티는 생명주기에 따라 관리된다 액티비티의 클래스는 다음과 같이 6개의 콜백 함수를 제공
jinee0717.tistory.com
developer.android.com/guide/components/fragments#Adding
프래그먼트 | 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
-> 액티비티와의 통신 부분 다시 읽어보기
'안드로이드' 카테고리의 다른 글
[안드로이드] 파이어베이스 연결 및 sha1 인증번호 찾기 (0) | 2021.05.11 |
---|---|
[안드로이드] 액티비티 생명주기(Activity LifeCycle) (0) | 2021.03.16 |
[안드로이드] 안드로이드 런타임 (0) | 2021.03.12 |
[안드로이드] Android Thread 안드로이드 스레드 (0) | 2021.03.05 |
[안드로이드] 캘린더 팝업 기능 AlertDialog (0) | 2021.02.28 |