• 로그인 함 해보끄나?

  • Sarangnamu.net June 17, 2003
    Home Login Profile Study Open Project Q&A Google Code
    viewmodel 에서 lifecycle 관리
    Last Modify : 23 August, 2019(09:44)
    기존에 단순한 생각에 ILifeCycle 을 만들고 이를 기준으로 onPause, onResume, onDestroy 를 ViewModel 에 전달을 했었는데 생각해보니 Android 에 Lifecycle 관련 하여 추가 됨을 인지하곤 소스를 봤는데 AppCompatActivity -> FragmentActivity -> ComponentActivity -> Activity 로 들어가자 LifecycleOwner 이 존재함을 확인 했다. 일단 이를 이용하려면 미리 등록되어 있던 LifecycleRegistry 에 LifecycleObserver 를 추가해서 사용해야 하는데 2가지 선택권이 있었다. 하나는 viewmodel 에 인자로 추가하는 방법 그리고 인터페이스를 상속하는 방법 이중에 후자를 선택했고 viewmodel 에 아래와 같이 추가해서 사용하면 viewmodel 에서 lifecycle 을 알 수 있게 된다. class YourViewModel: LifecycleEventObserver { override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } } class SomeActivity { override fun onCreate(savedInstanceState: Bundle?) { // ... lifecycle.addObserver(mYourViewModel) } } 여담이지만 구조적으로는 인자에 LifecycleEventObserver 를 추가하는게 나아 보이긴 하지만 lifecycle.addObserver(mYourViewModel) 코드를 BaseFragment 나 BaseActivity 에서 LifecycleEventObserver 를 상속받은 viewmodel 일 경우 알아서 설정해주기 위해 이 방식을 선택 했다.

    Comment


    입력하3 1591028271



    Locations of visitors to this page