반응형
AAC(Android Architecture Components)란?
- AAC는 안드로이드 앱 개발을 쉽게 만들기 위해 제공되는 아키텍처 구성 요소
- 앱 개발 시 라이프사이클 관리, 데이터 저장, UI 상태 관리 등을 표준화
- MVVM 패턴과 함께 사용하면 유지보수성과 확장성이 뛰어난 앱을 개발 가능
AAC 주요 구성 요소
- ViewModel : UI 데이터를 저장하고 라이프사이클을 관리
- LiveData : 데이터 변경을 감지하고 UI에 반영
- Room : SQLite DB를 관리하는 ORM 라이브러리
- LifeCycle : Activity / Fragment의 라이프사이클을 관리
ViewModel
- UI 데이터를 관리하고 라이프사이클을 유지하는 역할
- ViewModel을 사용하면 화면 회전 시 데이터가 유지됩니다.
class MyViewModel : ViewModel() {
private val _count = MutableLiveData(0)
val count: LiveData<Int> = _count
fun increment() {
_count.value = (_count.value ?: 0) + 1
}
}
LiveData
- 데이터 변경을 감지하고 UI에 자동 반영
- LiveData는 UI에서 관찰할 수 있는 데이터 구조
- 라이프사이클을 자동으로 관리하여 메모리 누수를 방지
val countLiveData = MutableLiveData(0)
// LiveData 변경 감지하여 UI 업데이트
countLiveData.observe(viewLifecycleOwner) { newCount ->
textView.text = "카운트: $newCount"
}
Room
- SQLite DB를 간편하게 사용할 수 있도록 도와주는 ORM 라이브러리
- Entity + DAO + DB
LifeCycle
- Activity / Fragment의 라이프사이클을 관리
- 불필요한 리소스 사용을 방지하여 성능을 최적화합니다.
class MyObserver : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
Log.d("Lifecycle", "onResume 호출됨")
}
}
LifeCycle이 불필요한 리소스 사용을 방지하는 원리
- LifecycleObserver를 사용하여 특정 시점에서 리소스를 해제하거나 중지 가능
class MyObserver : DefaultLifecycleObserver {
override fun onStart(owner: LifecycleOwner) {
Log.d("Lifecycle", "onStart() - 리소스 시작")
}
override fun onStop(owner: LifecycleOwner) {
Log.d("Lifecycle", "onStop() - 리소스 해제")
}
}
- Lifecycle을 활용하여 백그라운드에서 불필요한 네트워크 요청 방지
class NetworkManager(private val lifecycle: Lifecycle) : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
startNetworkRequest() // ✅ 화면이 보일 때만 네트워크 요청
}
override fun onPause(owner: LifecycleOwner) {
stopNetworkRequest() // ✅ 화면이 안 보이면 네트워크 요청 중단
}
}
반응형