每个 Android 应用程序都有自己的有限内存
// Get max available VM memory, exceeding this amount will throw an
// OutOfMemory exception.
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
// Use 1/8th of the available memory for this memory cache.
final int cacheSize = maxMemory / 8;
在普通设备上,这至少约为 4 MB (32/8)
每个应用程序分配 32 MB。
在分辨率为 800x480 的设备上填充图像的全屏网格视图将使用大约 1.5MB(800*480*4 字节)。
800*480*4 = 实际图片尺寸
这将在内存中缓存至少大约 2.5 页的图像。即在您的网格视图中,只有 2.5 个图像存储在缓存中...当您向上和向下滚动到 2.5 个图像时,它会从缓存中获取图像。 ..当用户移动到第三张或第四张图片时..前两张图片缓存被清除,新的下载图片在缓存中。
缓存机制主要用于网格视图列表中图像的平滑滚动。
机制:
在列表或网格视图中,当用户向下滚动时,从网络下载第一张图像并存储在缓存中。当用户向上滚动时,如果可用,则从缓存中获取图像。
Android 使用两种机制:
1.LRU Cache(使用内部应用内存)
2.Disk Cache(使用sdcard内存)
磁盘缓存代码是从 Android 操作系统中提取的。
这将有限数量的数据存储在 sdcard 中。当插入的数据超过时,最近最少使用的文件被删除并存储新文件。
例如:
Facebook Android 使用磁盘缓存。
在应用程序级别或设置>管理应用程序>应用程序名称中清除缓存。
每个应用程序都有自己的Cache Memory,一个应用程序不能访问其他应用程序的Cache Memory..
欲了解更多信息,请访问:
http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html#disk-cache