title: Viewmodel observing LiveData - how?
body: <p>Before <code>Lifecycle</code> and <code>LiveData</code> stuff, Viewmodel could observe changes to its own observables quite easily. It was only a matter of subscribing to <code>Observable*</code>'s changes and react to them. Then one might used a two-way binding to react immediately on user's input.</p>
  
  <p>In Android Studio Canary, it is now allowed to bind to LiveData objects, provided that Binding knows lifecycle of its owner (ViewBinding now has additional <code>setLifecycle</code> method), by <a href="https://androidstudio.googleblog.com/2017/12/android-studio-31-canary-6-is-now.html" rel="noreferrer">Android Studio Canary information</a>:</p>
  
  <blockquote>
    <p>You can now use a LiveData object as an observable field in data binding expressions. The ViewDataBinding class now includes a new setLifecycle method that you need to use to use to observe LiveData objects.</p>
  </blockquote>
  
  <p>However, <a href="https://developer.android.com/topic/libraries/architecture/viewmodel.html" rel="noreferrer">Viewmodel documentation</a> states clearly:</p>
  
  <blockquote>
    <p>ViewModel objects can contain LifecycleObservers, such as LiveData objects. <b>However ViewModel objects must never observe changes to lifecycle-aware observables, such as LiveData objects.</b></p>
  </blockquote>
  
  <p>(emphasis mine)</p>
  
  <p>So how one can react immediately to LiveData changes if ViewModel cannot subscribe to them?</p>
  
  <p>And, furthermore, <em>why</em> Viewmodel can not observe changes to its own LiveData?</p>