我正在查看docs并试图了解LruCache是否与我的应用程序的其余部分竞争堆资源,或者如果它实际使用某种精细的磁盘交换机制。LruCache受Android应用程序内存空间的限制吗?
我问的原因是我想为缓存分配大量内存(比如说一个演出),这样如果设备失去了互联网连接,大量的图像数据可以在本地持续存在。但是,如果LruCache受应用程序堆内存分配大小的限制,这显然不起作用。
我希望有人可以指出我有关这个功能如何工作的更详细的文档,如果这不是正确的功能来处理这种需求,如果我需要推出自己的或如果有一个Android本机磁盘交换内存类,我忽略了可能应该结合LruCache(或完全自己使用?)
那么......如果我想要坚持一些大块的本地图像,而不会冒着在本地存储上消耗超过N块的风险,那么什么(如果有的话)是我的追索权?我完全不幸运? –
@GeniaS .:“我想要保留大量本地图像,而不会冒着在本地存储上消耗超过N块的风险?” - 我不知道你认为“本地存储”是什么意思。如果你指的是磁盘空间,它不会像“磁盘交换内存”以某种方式奇迹般地使用没有磁盘空间。所以,如果你的想法是“我会将数据存储在内存中,以节省磁盘空间”,这有点倒退,在这种情况下,你绝对不走运。 – CommonsWare
@GeniaS .:通常,在Android中,您首先使用内存缓存。如果您需要更多空间,或者希望高速缓存能够在进程终止(例如Web浏览器高速缓存)后生存,则可以使用由磁盘支持的双层高速缓存。您仍然限制您使用的磁盘空间量,因此用户不会对您生气。如果你有更多的东西,使用LRU和类似的算法来最大化缓存值,并最小化你需要从原始数据源(例如网络)再次获取的内容。 – CommonsWare