The documentation for the timer operator says this:
Create an Observable that emits a particular item after a given delay
Thus the behavior you are observing is expected- timer() emits just a single item after a delay.
The interval operator, on the other hand, will emit items spaced out with a given interval.
For example, this Observable will emit an item every second:
Observable.interval(1, TimeUnit.SECONDS);