intro..
저를 비롯한 많은 모바일 개발자 꿈나무들은 여러 Activity와 Fragment를 만들고 View 를 띄우고, 데이터를 주고받는 등
다양하게 활용하고 있습니다.
좋은 코드 들고와 클론 코딩을 하던 중,
BaseFragment 에 Fragment Lifecycle 단계에 맞춰 다양한 오버라이드 (onCreated 등등..) 함수가 구현되어 있는것을 발견!

그런데 어떤 생명주기 단계에서는 data를 초기화하고, 어디서는 listener를 초기화하고, 어디서는 livedata 옵져버를
초기화하고.. 또 onDestory 에선 viewBinding을 null로 바꿔주고..
가볍게만 알고있던 Fragment Lifecycle 이였는데,, 왜 각각의 위치에서 데이터, 리스너 등등을 초기화하는지..
이런걸 알아야 효율적인 코드를 짜는데..아직 난 새싹이구나..!
이러한 개념을 공부하려고 타고타고 올라가다 결국 Activity와 Fragment 란 무엇인지 둘의 차이가 무엇인지 까지 도달하게되었다.
그래서 이번포스팅과 다음 포스팅은 Fragment, Activity란 무엇인지를 다루고,
다음 포스팅에서 각각의 생명주기에 대해 다뤄보려 한다!
Activity 란?
XML의 View 를 띄어주고, 4대 컴포넌트 중 하나인 친구이며, 대부분의 작동은 이 Activity 위에서! 근데 무겁다~~
까지는 알고있었는데.. 너무 얕게 알고있는 느낌이다.. 위 내용을 포함해서 더 깊게 정리해보려한다.
1. UI의 전반적인 활동을 담당하는 구성요소
- XML에서 작성한 뷰를 보여주는 공간!
2. 안드로이드를 구성하고있는 4대 컴포넌트 중 하나
- 안드로이드는 4대 컴포넌트로 구성되어 있다.
Activity
Service
Broadcast Receiver
Contents Provider
3. Activity는 앱과 사용자의 상호작용을 위한 진입점!
- 앱에는 다양한 Activity가 존재할 수 있으며, 상황에 맞는 Activity가 켜지게 됨
예를들어 유튜브를 보다가 해당 영상을 카톡에 공유하고싶을 경우!
이땐 카톡의 메인 엑티비티부터 시작하는것이 아닌, 공유 엑티비티가 호출되어 역할을 수행한다는 소리다.
(카톡의 엑티비티가 기능별로 나눠져 있다는 가정하에)
즉, 한 앱이 다른앱을 호출할 때, 호출 앱은 다른 앱의 전체 앱을 호출하는 것이 아닌 정해진 액티비티에 접근하는 것.
4. 각 Activity들은 다른 Activity에 최소한의 종속성을 가짐.
- 다른 Activity의 메소드와 변수들을 직접 호출할 수 없음 - 원하는 Activty 생성 후 값을 가져와 함
- 데이터를 통신할땐 intent, content provider 를 사용하여 공유함.
5. Fragment보다 무겁다?
- Fragment 가 Activity 위에서 동작하니, Activity가 더 무거울 수밖에 없다는건 당연하지만
자세한 이유를 찾고싶다.. 잘 나온게 없어서 일단 보류!
6. 일반적이지 않은 패러다임
- Main 메소드에서 시작하는 일반적 프로그래밍 패러다임과는 달리, onCreate 와 같은 특정 콜백 메서드를 호출하여 activity를 실행시킴.
조금 더 깊게 공부하고싶었으나..
예를들어 프로세스와 스레드와 같은 측면에서?? 그치만 잘 나와있는게 없다..
추후에 보충해보도록 하겠다!
Fragment 란?
fragment는 activity 위에서 움직이며 더 가볍기에 엑티비티 대신 쓰인다~ 라고는 알고있는데,, 조금 더 자세히 알고싶다.
1. Activity 내에서 UI 요소를 세분화해서 관리하고 싶을 때 사용되는 개념.
- Activity 에 View의 개념을 합친 개념!
- activity의 기능을 거의 다 가지고있음.
2. 자체 Lifecycle을 가지고있으나, 부모 Activity의 수명주기에 직접적인 영향을 받음
3. Activity에 비해 작고 가벼움 -> 리소스 관리, 메모리 관리측에서 효과적
4. 재사용성이 좋음
- Activity에 다 때려박을 View를 세분화시켜 Fragment에 담는것이기 때문에,
어떤 Activity에서든 해당 Fragment 클래스를 끌고와 써먹을 수 있음!
5. ViewModel로 데이터 통신
사실 써놓고도 죄책감이....ㅜㅜ
구글링을 참 많이 했는데도 전부다~~ 너무 당연한 이야기를 해서 많이 못정리한것같다..
추후에 알게되는 정보는 업로드 예정!
학부생 레벨에서 쓴 글로, 다소 부족한 부분이 있을 수 있으니 친절한 피드백을 매우 환영합니다.
'Android' 카테고리의 다른 글
| [Android] Fragment의 정의와 필요성, Lifecycle 및 이에 따른 대응. (0) | 2023.06.25 |
|---|---|
| [Android] Activity Lifecycle 과 화면회전 시 변화 (0) | 2023.06.22 |
| [Android] 메모리 영역과 JVM Garbage Collecter (JVM, DVM, ART) (0) | 2023.05.22 |
| [Android] JVM, DVM, ART (2) | 2023.05.19 |
| [Android] JVM란 무엇일까? (0) | 2023.04.05 |