본문 바로가기

viewmodel 에서 lifecycle 관리 기존에 단순한 생각에 ILifeCycle 을 만들고 이를 기준으로 onPause, onResume, onDestroy 를 ViewModel 에 전달을 했었는데 생각해보니 Android 에 Lifecycle 관련 하여 추가 됨을 인지하곤 소스를 봤는데 AppCompatActivity -> FragmentActivity -> ComponentActivity -> Activity 로 들어가자 LifecycleOwner 이 존재함을 확인 했다. 일단 이를 이용하려면 미리 등록되어 있던 LifecycleRegistry 에 LifecycleObserver 를 추가해서 사용해야 하는데 2가지 선택권이 있었다. 하나는 viewmodel 에 인자로 추가하는 방법 그리고 인터페이스를 상속하는 방법 이중에 후자를 선택했고 .. 더보기
layout id 값 live template 으로 처리 하기 원래 반복되는 코드를 매우 귀찮아 하던 차에 layout id 를 class name 을 기반으로 가져오도록 코딩을 해 놓은게 있었는데 (아래 참조) private var mLayoutName = generateLayoutName() inline fun Fragment.generateLayoutName(): String { val name = javaClass.simpleName var layoutName = name[0].toLowerCase().toString() name.substring(1, name.length).forEach { layoutName += if (it.isUpperCase()) { "_${it.toLowerCase()}" } else { it } } return layoutNam.. 더보기
androidx.databinding.Observable mock 개인적으로 LiveData 보다는 Observable 시리즈 (ObservableField, ObservableInt, ObservableBoolean 등..) 를 주로 View Databinding 에 이용하고 LiveData 는 Life Cycle 에 영향 받을만한 부분만 정보 이용하고 있는데 Observable 를 테스트를 하기 위해선 어떻게 해야 하는지 알아 보았다 . 일단 이를 위해 inline fun 을 만들었는데 별건 없고 onPropertyChanged 이 호출 되었는지 ? 를 확인하기 위한 fun 이다. inline fun androidx.databinding.Observable.mockCallback(): Observable.OnPropertyChangedCallback { val mo.. 더보기