Android中的内存缓存

时间:2013-04-02 10:22:16

标签: android

我正在尝试将一个视频存储在内存缓存中,视频完成后将其从缓存中删除。在播放期间,无法从缓存中删除视频文件。

2 个答案:

答案 0 :(得分: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;

在普通设备上,这至少约为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使用磁盘缓存。

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

每个应用程序都有自己的缓存,一个应用程序无法访问其他应用程序的缓存内存。

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

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

答案 1 :(得分:0)

从评论中你似乎要做的是将一个文件存储在永久存储器中,然后将其删除:

因此我建议您使用getCacheDir()方法获取写入文件的位置,然后使用createTempFile()创建临时文件,并在您不知道时使用delete()方法再也不需要了。

这是一个StackOverflow帖子,展示了如何操作:https://stackoverflow.com/a/6485850/906362