[kotlin] Lifecycle 라이브러리
Android 앱을 개발하다 보면 화면 회전, 백그라운드 진입, 다른 액티비티로의 전환 등의 상황에서 액티비티나 프래그먼트의 생명주기(lifecycle)에 대한 처리가 필요하다.
이러한 상황에서 Lifecycle 라이브러리는 액티비티나 프래그먼트의 생명주기를 관리하는 데 도움이 되는 도구이다. 이 라이브러리를 사용하면 생명주기 이벤트에 쉽게 반응하고, UI 컴포넌트와 데이터 관찰자를 자연스럽게 연결할 수 있다.
주요 구성 요소
Lifecycle 라이브러리의 주요 요소에는 다음과 같은 것들이 있다:
- LifecycleOwner: 생명주기를 가지고 있는 객체를 나타낸다. 주로 액티비티나 프래그먼트가 해당된다.
- Lifecycle: 생명주기를 나타내는 인터페이스이다. LifecycleOwner의 생명주기 이벤트를 수신할 수 있다.
- LiveData: 수명주기를 인식하는 데이터 홀더 클래스이다. Lifecycle 객체와 함께 사용하여, 생명주기 이벤트에 따라 데이터 변경을 알린다.
- ViewModel: UI 컨트롤러 클래스로, UI 관련 데이터 처리 및 상태 보존을 담당한다.
Lifecycle 라이브러리의 장점
Lifecycle 라이브러리의 주요 장점은 다음과 같다:
- 간편한 생명주기 관리: LifecycleOwner를 통해 생명주기를 쉽게 추적하고 관리할 수 있다.
- UI와 데이터 간의 느슨한 결합: LiveData와 ViewModel을 활용하여 UI 컴포넌트와 데이터 간의 느슨한 결합을 구현할 수 있어서, 일관된 UI 갱신 및 데이터 업데이트가 가능하다.
- 구조적 일관성: 생명주기 관리를 위한 일관된 패턴을 제공하여, 코드의 가독성과 유지보수성을 향상시킨다.
예시
다음은 Lifecycle 라이브러리를 사용하여 LiveData와 ViewModel을 활용하는 예시 코드이다:
class MyViewModel : ViewModel() {
private val _userList = MutableLiveData<List<User>>()
val userList: LiveData<List<User>> = _userList
fun fetchUserList() {
// 유저 목록을 가져오는 비동기 작업 수행
// 작업이 완료되면 _userList 값을 업데이트
}
}
class MyFragment : Fragment() {
private val viewModel: MyViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.userList.observe(viewLifecycleOwner) { userList ->
// 유저 목록이 업데이트되면 UI를 업데이트
}
}
}
위 코드에서 ViewModel은 LiveData를 사용하여 유저 목록을 감지하고, 프래그먼트에서는 viewLifecycleOwner를 통해 해당 생명주기 이벤트에 대한 감시자 역할을 하고 있다.
Lifecycle 라이브러리는 Android 앱의 생명주기 관리를 효율적으로 처리할 수 있도록 도와주는 강력한 도구이다. 생명주기 관리를 효과적으로 수행하고, UI와 데이터 간의 상호작용을 스마트하게 구현하기 위해선 이 라이브러리를 적극적으로 활용하는 것이 좋다.
참고: Android Developers - Lifecycle 라이브러리