Supposedly the .share() operator which basically is a shorthand for .publish().refCount() should provide that kind of behaviour, but this was only working for a simple Cold State Observable like Observable.just(1,2,3,4,5) where both the Subscribers that I have added to that Observable were getting their data on the same Memory Address.

Unfortunately though, when we had to deal with Observables that were executing Retrofit API calls, each subscriber was causing the original Observable to re-execute the API call, which was not our desired result, because on the case that you wanted to share these data between a View and a Service that would act upon these data, there could always be a chance that you would receive slightly different results, but certainly not the same results, saved on the same Memory Address.

One way of solving this, was changing from Observables to ReplaySubject, but that would automatically mean, that we should change our entire Service class to return ReplaySubject, in the form of Observable, but still a huge change.

Another possible way of solving this, would be to use the .cache() operator, in order to deal with the exact same data on the exact same Memory Address, but as always this would also require us to implement a Cache Invalidation logic, in order to be able to refresh our data when needed.

Finally and thanks to StackOverflow user JohnWowUs, there was a fairly simpler solution.