Android缓存到磁盘

时间:2018-01-01 01:46:39

标签: java android caching sharedpreferences

我想知道是否有办法将Web请求中的任意数据缓存到Android磁盘上。我想到的流程如下:

数据存储为键值对,其中键是某个标识符,值是原始数据。在实际发出我的Web请求之前,我检查密钥是否在缓存中,如果是,我跳过发出Web请求。如果密钥在缓存中不存在,那么我发出Web请求并将数据存储在磁盘上。我希望在应用程序的多次运行中可以访问缓存的数据,这样我每次启动应用程序时都不必再次发出Web请求。

我正在考虑使用SharedPreferencesSharedPreferences会是最好的解决方法吗?可以在SharedPreferences中的单个密钥中存储1兆字节的数据吗?

2 个答案:

答案 0 :(得分:2)

存储缓存文件的最佳解决方案是将它们存储在缓存目录中。幸运的是,Android API提供了解决此问题的方法:Context#getCacheDir。您可以在返回的目录中创建文件,您可以使用映射存储每个文件的标识符以便检索它们。

虽然,这个解决方案有一些限制:

  

系统将自动删除此目录中的文件,因为设备上的其他位置需要磁盘空间。

缓存数据仅应用于临时存储信息。

答案 1 :(得分:1)

我可能会迟到,但几年前我为此创建了一个图书馆:

https://github.com/fcopardo/EasyRest

这个想法是允许应用程序在不稳定或无连接的情况下运行,而不必实现用于持久化数据的辅助数据层,而是根据需要保留响应,并在不强制用户强制的情况下刷新它们。等待。看一看,你可能会得到一些想法。