title: LiveData keeps on outputting changes to last given observable
body: <p>I am using room persistence lib and LiveData and Rx Android, I'm observing a change in id, this is the id of the song currently being played when a new song is played the id will change.</p>
  
  <p>My issue when a new song is played the onNext function is still being called on the old song creating unwanted behaviour for my UI, this I suspect is because there are changes occurring to the old song and it is still subscribed.</p>
  
  <p>Is there an Rx Operator to unsubscribe from the old Live Data and subscribe to the new Live Data stream, therefore only observing one song Object at a time...</p>
  
  <pre><code>   mDisposable.add(Observable.just(id)
                  .flatMap(str -&gt; Observable.just(Objects.requireNonNull(mViewModel.getLiveDataSong(str))))
                  .subscribeOn(Schedulers.io())
                  .observeOn(AndroidSchedulers.mainThread())
                  .subscribe(song -&gt;
                          song.observe(this, mSong -&gt;
                                  mDisposable.add(Observable.just(mSong)
                                          .subscribeOn(Schedulers.io())
                                          .observeOn(AndroidSchedulers.mainThread())
                                          .subscribe(liveSong -&gt; Log.d(TAG, "Live Song " + liveSong.toString()),
                                                  error -&gt; Log.d(TAG, "Error " + error.getLocalizedMessage()),
                                                  () -&gt; Log.d(TAG, "Complete " + mSong.toString()))))));
  </code></pre>