BigJeon Android 개발 블로그
안드로이드 아키텍쳐 컨포넌트(AAC)란? 1)lifecycle 본문
오늘은 이전 포스팅 4대 컨포넌트에 이어 AAC에 대하여 알아보도록 하겠다.
일단 AAC가 어떤걸 의미하는지 알아보자.
AAC란?
Android Architecture Component
구글에서 설명하기를 AAC 라이브러리는 개발자들이 개발진행시 마주 할 수 있는 많은 문제에 대한 쉬운 해결책 이라고 발표하였다.
구글의 AAC발표 이전에는 생명주기가 꼬이지않게, 테스트하기 용이하게, 유지보수가 쉽게 만들기 위해 개발자들은 수없이 고민하고 수정해나갔어야 했다. 이는 곧 개발 속도의 지연과 많은 에러 불편한 테스트로 이어지게 되었고 일의 효율을 크게 떨어뜨리는 악효과나 나오게된다.
이에 구글은 '우리가 가이드를 보여줄테니 이것에 맞춰 사용하면 편해'라는 뜻으로 ACC를 발표한것이다.
그럼 왜 편할까?
크게 ACC에는 5가지의 라이브러리가 있다.(초기버전(2017)에는 4가지였으나 추후 업데이트를 통해 1가지가 더 생겼다고 한다.)
- LifeCycles(쉬운 생명주기 관리)
- LiveData(데이버 변화 관찰)
- ViewModel(생명주기 안의 데이터 관리)
- Room(SQLlite 형식의 Mapping)
- Paging(순서에 따른 페이지 구성)
이렇게 5가지가 있다.
대충 봐도 이전에 포스팅했던 MVVM과 크게 다르지 않다는것을 알수있다. 결국 AAC를 이용하여 MVVM을 만든거라 생각된다.
따라서 AAC를 이용하였을때 편하다고 하는 이유는 MVVM패턴을 사용하는 이유와 같다고 생각되어 자세한건 생략하겠다.
그럼 위에 1번 LifeCycles 부터 하나씩 살펴보도록 하겠다.
1_LifeCycles(쉬운 생명주기 관리)
기능 : Activity나 Fragment의 생명 주기 상태를 가져와 해당 상태에 따른 작업을 할수 있도록 해준다.
즉 다른 Object가 옵저빙을 통해 생명주기가 활성 상태 인지, 멈춘상태인지, 비활성 상태인지를 LifeCycle을 통해 받아와 각 상태에 따른 작업이 가능하게 만들어준다는 것이다.
LifeCycles는 각 Activity, Fragment의 생명주기 상태를 포함하고 있으며, 크게 EnumClass인 Event와 State , Interface인 LifeCycleObserver가 있다.
EnumClass - Event : 각 액티비티나 프레그먼트에서 발생하는 생명주기 이벤트이다.
- ON_ANY
- ON_CREATE
- ON_DESTROY
- ON_PAUSE
- ON_RESUME
- ON_START
- ON_STOP
등이 있다.
EnumClass - State : 각 액티비티나 프레그먼트의 현재 생명주기 상태이다.
- CREATED : onCreate()의 Call 이후 or onStop()의 Call 이후
- DESTROYED : onDestory()이 Call 되기 직전
- INITIALIZED : onCreate()이 Call이 되지 않은 시점
- RESUMED : onResume()이 Call 된 시점
- STARTED : onStart() Call 이후 or onPause() Call 직전
등이 있다.
각 상태, 이벤트에 대한건 그림으로 대체하겠다.
Interface - LIfeCycleOwner :
LifeCycleOwner는 클래스 내부에 lifecycle이 존재함을 나타내는 단일 메서드 인터페이스다.(전체 어플리케이션의 라이프 사이클을 관리하려면 ProcessLifeCycleOwner를 참조해야한다.)
LifeCycleOwner인터페이스는 각 Fragment나 AppCompatActivity에서 LifeCycle의 소유권을 추출하고, 함께 작동되는 구성요소들을 작성할수있다.
일반적인 사용 사례에서는 LifeCycle이 현재 정상 상태가 아닌 경우 특정 콜백 호출을 피한다. 예를 들어 활동 상태가 저장된 후 콜백이 프래그먼트 트랜잭션을 실행하면 비정상 종료를 트리거할 수 있으므로 콜백을 호출하지 않는 것이 좋다.
사용 예시나 더욱 자세한 내용은 생명주기처리
수명 주기 인식 구성요소로 수명 주기 처리 | Android 개발자 | Android Developers
새 Lifecycle 클래스를 사용하여 활동 및 프래그먼트 수명 주기를 관리합니다.
developer.android.com
를 참고하기 바란다(필자도 공식문서를 기반으로 찾아보았다.)
'안드로이드(기술)' 카테고리의 다른 글
비동기 처리를 쉽게 해주는 Coroutine에 대하여 알아보자_2(최종) (0) | 2021.10.03 |
---|---|
비동기 처리를 쉽게 해주는 Coroutine에 대하여 알아보자_1 (0) | 2021.09.30 |
아키텍처가 대체 뭘까? (0) | 2021.09.09 |
안드로이드 4대 컴포넌트란? (0) | 2021.05.21 |
LiveData란?(추후 MVVM예제와 연결) (0) | 2021.03.28 |