MutableLiveData를 RxStream으로 변환하려는 이유는?

val <E> MutableLiveData<E>.rx: Observable<E>
    get() {
        return Observable.create { emitter ->
            if (!emitter.isDisposed && value != null) {
                emitter.onNext(value!!)
            }

            val observer: Observer<E> = Observer {
                if (!emitter.isDisposed && value != null) {
                    emitter.onNext(value!!)
                }
            }

            this.observeForever(observer)

            emitter.setCancellable {
                this.removeObserver(observer)
            }
        }
    }

MutableLiveData의 확장 프로퍼티를 만들어서 Observable로 반환한다.

emitter가 해제되지 않았거나 value가 null이 아니면 onNext로 현재 값을 발행한다. 이 발행된 값을 MutableLiveData가 수신할려면 옵저버를 등록해야하고 메모리 누수를 막기 위해 꼭 해제도 해주어야한다.

class MovieViewModel {
		
	 private val _searchText: NotNullMutableLiveData<String> = NotNullMutableLiveData(movieRepository.latestMovieQuery)
	 val searchText: MutableLiveData<String>
       get() = _searchText

		
   init {
		   val query = _searchText.rx
				   .toFlowable(BackpressureStrategy.DROP)
	}

}