小智 11
每个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;
Run Code Online (Sandbox Code Playgroud)
在普通设备上,每个应用程序至少分配大约4 MB(32/8)32 MB.
在800x480分辨率的设备上填充图像的全屏网格视图将使用大约1.5MB(800*480*4字节).800*480*4 =实际图像尺寸
这将在内存中缓存大约2.5页的图像.在网格视图中,只有2.5个图像存储在缓存中...当您向上和向下滚动最多2.5个图像时,它从缓存中获取图像...当用户移动到第3或第4个图像..清除前两个图像缓存并在缓存中新下载图像.
缓存机制主要用于在网格视图列表中平滑滚动图像.
机制:在列表或网格视图中,第一个图像从网络下载并在用户向下滚动时存储在缓存中.当用户向上滚动时,如果图像可用,则从缓存中获取图像.
Android使用两种机制:
1.LRU Cache(使用的内部应用程序内存)2.Disk Cache(使用的SD卡内存)
磁盘缓存代码是从Android操作系统中提取的.这会在sdcard中存储有限数量的数据.插入数据超出时,删除最近最少使用的文件并存储新文件.
例如:Facebook Android使用磁盘缓存.
在应用程序级别或设置>管理应用程序>应用程序名称中清除缓存内存.
每个应用程序都有自己的Cache Memory,一个应用程序无法访问其他应用程序的缓存.
欲了解更多信息,请访
http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html#disk-cache