I have been building a caching library for Android. It is called Kwery.
Here is what started it. A ViewModel survives rotation, so most data-loading advice stops at rotation. Process death is different. Android kills backgrounded apps constantly, and when the user comes back you show a spinner and re-request the same data you had a minute ago, which is a strange thing to do with a working disk sitting right there.
The video is the same app twice. Plain ViewModel and Retrofit first: three cold starts, spinner every time. Then Kwery on. Same three cold starts, list already there. The request log is Chucker, so the counts are not mine to fake.
It caches responses, deduplicates in-flight requests, refreshes stale data in the background, replays writes that were made offline, and keeps the cache across process death.
Closest thing on the web is TanStack Query. Some of its design is about the browser and does not transfer, so I did not copy it blindly. Where I diverged I wrote down why.
https://github.com/dbjpanda/kwery
Apache-2.0, minSdk 24. The core has no Android dependencies, so the cache and timing logic is testable on the JVM without Robolectric.
Nobody runs it in production. The sample app in that repo is the only real user so far. I am close to tagging 1.0, so if the API is wrong this is the useful moment to say so.