Android 使用 NYTimes Stores 缓存 network request
NYTimes Stores 是一个缓存库,在 2017年的 AndroidMakers 大会上被介绍过。
https://github.com/NYTimes/Store
实现一个 Disk Cache 需要以下几个步骤:
- 在 Retrofit 的 API 下
@GET("/v1/events")
Single
两点需要注意,一是要用 Single,而是要用 ResponseBody
- 创建 fetcher
private fun fetcher(): Single
return service.getEventsResponseBody().map({ it.source() })
}
- 创建 Store
private fun provideStore(): Store<Events, String> {
return StoreBuilder.parsedWithKey<String, BufferedSource, Events>()
.fetcher { fetcher() }
.persister(FileSystemPersister.create(FileSystemFactory.create(filesDir)) { key -> key })
.parser(JacksonParserFactory.createSourceParser(Events::class.java))
.open()
}
- 使用 Store
store.get("cache_key") // get or fetch
移动开发者