You invoke the debounce() function in the createTextChangeObservable(). By default, it operates on the computation thread. That’s why you need to explicitly define the execution thread as main, otherwise, you’ll get CalledFromWrongThreadException, as you can access Android views from the main thread only