시배's Android
Android | Mavericks 사용할 때 MavericksState 초기값 설정하기 본문
Mavericks 라이브러리를 사용하여 MVI 아키텍처의 안드로이드 앱 개발 시, MavericksState의 UiState 초기값을 동적으로 어떻게 설정하는지에 대해 알아보려고 합니다.
data class TestUiState(
val test: Test
) : MavericksState
data class Test(
val abc: String = ""
)
간단하게 UI에서 TestUiState를 구독하여 Test 데이터 클래스의 초기값을 동적으로 설정하고자 합니다.
data class TestUiState(
val test: Test
) : MavericksState {
constructor(args: Bundle) : this(
test = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
args.getParcelable(
Mavericks.KEY_ARG,
Test::class.java
)
} else {
args.getParcelable(Mavericks.KEY_ARG)
} ?: Test()
)
}
@Parcelize
data class Test(
val abc: String = ""
) : Parcelable
우선 Test클래스를 Bundle을 통해 전달해야 하므로 Parcelize를 통해 직렬화 하도록 합니다.
보조 생성자(constructor)를 통해 Bundle을 매개변수로 받아와서 getParcelable을 버전에 따라 분기 처리하여 TestUiState를 초기화합니다.
val viewModel: TestViewModel = mavericksActivityViewModel(
argsFactory = {
Test(abc = "Dynamic").asMavericksArgs()
}
)
Mavericks에서 제공하는 mavericksActivityViewModel을 통해 viewModel을 초기화하는데 이때 argsFactory를 통해 Test 데이터 클래스를 asMavericksArgs() 확장함수를 통해 전달합니다.
이 방법을 통해 MaverickState를 동적으로 초기화 할 수 있습니다.
'Android > Android' 카테고리의 다른 글
Android | Firebase Realtime Database를 더 쉽게 사용하기 (1) | 2024.11.25 |
---|---|
Android | Build Optimization (1) (1) | 2024.10.02 |
Android | Compose에서 Custom View Cache 하기 (0) | 2024.01.31 |
Android | The Real Modularization in Android (0) | 2023.09.23 |
Android | Deep dive into SavedStateHandle (0) | 2023.08.16 |