2013-04-02 117 views
1

我试图在内存缓存中存储一​​个视频,视频完成后它将从缓存中删除。在播放过程中,无法从缓存中删除视频文件。Android中的内存缓存

+0

什么是你想怎么办?缓存bitamps? – Raghunandan

+0

由问题2,看看:http://stackoverflow.com/questions/10977288/clear-application-cache-on-exit-in-android – Castiblanco

+0

你必须更好地解释你的问题。你想缓存什么?位图?文件?交易? JSON?你想在哪里缓存它:在RAM内存还是永久性的? – Budius

回答

9

每个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页图片的最少数量.ie在您的网格视图中,只有2.5张图片存储在缓存中......当您向上和向下滚动时到2.5图像,它从缓存中获取图像...当用户移动到第3或第4个图像时。前两个图像缓存被清除,新的下载图像缓存。

缓存机制主要用于平滑滚动网格视图列表中的图像。

机制: 在列表或网格视图中,第一张图像从网络下载并在用户向下滚动时存储在缓存中。当用户向上滚动时,如果图像可用,则从缓存中提取图像。

Android采用两种一种机制:

1.LRU缓存(内部应用程序的内存使用) 2.Disk缓存(使用SD卡存储)

磁盘缓存的代码是从Android操作系统拉。 这将有限的数据存储在SD卡中。当插入数据超过时,最近最少使用的文件被删除并存储新文件。

ex: Facebook Android使用磁盘缓存。

缓存内存在应用程序级别或设置>管理应用程序>应用程序名称中清除。

每个应用程序都有其自己的高速缓存,一个应用程序无法访问其他应用程序的高速缓存存储器..

欲了解更多信息,请访问:

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html#disk-cache