안드로이드 앱을 설계하고 개발할 때, 코드를 보다 모듈화하고 확장 가능하게 만들기 위한 다양한 아키텍처 패턴이 필요합니다. 안드로이드에서는 이를 위해 안드로이드 아키텍처 컴포넌트를 제공하고 있습니다. 이러한 컴포넌트들을 사용하면 안드로이드 앱의 구조를 나누고, 앱의 생명주기를 처리하며, 데이터를 관리할 수 있습니다.
이 포스트에서는 안드로이드 아키텍처 컴포넌트의 주요 구성요소인 라이브사이클, 뷰모델, 라이브데이터에 대해 자세히 알아보겠습니다.
목차
라이브사이클
안드로이드 앱은 다양한 생명주기를 갖고 있습니다. 앱이 실행되고 중지되는 경우에 대비해 라이브사이클은 앱의 생명주기 이벤트를 관리하고 처리하는 데 사용됩니다. 라이브사이클 컴포넌트를 사용하면 액티비티나 프래그먼트와 같은 구성요소들이 생명주기 이벤트를 인식하고, 이에 대응하여 작업을 수행할 수 있습니다.
라이브사이클 컴포넌트는 다루기 쉬우면서도 생명주기와 관련된 문제들을 효율적으로 처리할 수 있도록 도와줍니다.
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycle.addObserver(MyObserver())
}
}
class MyObserver : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onActivityResumed() {
// 액티비티가 포그라운드에 올 때 수행할 작업
}
}
뷰모델
뷰모델은 앱의 UI 관련 데이터를 처리하고 관리하는 데 사용됩니다. 뷰모델은 화면 회전과 같은 구성요소들의 생명주기 변화에도 데이터를 유지하면서 UI와 관련된 작업을 수행할 수 있도록 도와줍니다. 뷰모델은 앱의 화면과 관련된 데이터 로직을 분리하여 UI 구성요소가 데이터에 쉽게 접근할 수 있도록 합니다.
class MyViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String>
get() = _data
fun updateData(newData: String) {
_data.value = newData
}
}
라이브데이터
라이브데이터는 수명 주기를 인식하는 데이터 홀더 클래스로, 생명주기를 고려하여 UI 구성요소가 관찰할 수 있는 데이터를 제공합니다. 이를 통해 UI가 항상 최신 데이터를 표시하고, 활성 상태에 대해 적절하게 반응할 수 있도록 돕습니다.
라이브데이터를 사용하면 데이터가 변경될 때마다 UI가 업데이트되고, 화면 회전이나 다른 구성요소의 생명주기 변경 시 데이터가 유지됩니다.
class MyFragment : Fragment() {
private lateinit var myViewModel: MyViewModel
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
myViewModel.data.observe(viewLifecycleOwner, Observer { newData ->
// 데이터가 변경될 때 UI 업데이트 작업 수행
})
}
}
안드로이드 아키텍처 컴포넌트는 안드로이드 앱을 보다 확장 가능하고 유지보수가 용이하도록 만들어주는 강력한 도구입니다. 라이브사이클, 뷰모델, 라이브데이터를 이용하여 데이터 관리와 UI 업데이트를 보다 효율적으로 수행할 수 있습니다.
더 많은 정보를 원하신다면 Android Developers 사이트를 참고하시기 바랍니다.