Preserving the last items means that if the downstream cannot cope with the items that are being sent to them, the app will stop emitting values and wait until they become available. While waiting, it will keep dropping all the values except the last one that arrived and when the downstream becomes available, send the last message that's currently stored.
Like with Dropping, the Latest strategy can be specified while creating an Observable:
observable.toFlowable(BackpressureStrategy.LATEST)
Alternatively, by calling .onBackpressure():
observable.toFlowable(BackpressureStrategy.MISSING)
.onBackpressureLatest()
Finally, a method, .debounce(), can periodically take the last value at specific intervals:
observable.toFlowable(BackpressureStrategy.MISSING)
.debounce(10, TimeUnit.MILLISECONDS)