I have noticed that throughout the whole project and as an example in the PreferencesHelper.class you are using the Observable.create method without checking for isSubscribed. It is maybe not a problem in your exact usage pattern but as suggested from reowned Android Devs the usage of Observable.create should be avoided for various reasons. I think you can replace the Observable.create in most places with either Observable.just or Observable.fromCallable. There you get most of the thinks required from the Observable contract for free.
I have noticed that throughout the whole project and as an example in the PreferencesHelper.class you are using the Observable.create method without checking for isSubscribed. It is maybe not a problem in your exact usage pattern but as suggested from reowned Android Devs the usage of Observable.create should be avoided for various reasons. I think you can replace the Observable.create in most places with either Observable.just or Observable.fromCallable. There you get most of the thinks required from the Observable contract for free.