我正在尝试将一个视频存储在内存缓存中,视频完成后将其从缓存中删除。并且在播放过程中,该视频文件无法从缓存中删除。
2 回答
每个 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(使用sdcard内存)
磁盘缓存代码是从 Android 操作系统中提取的。这将有限数量的数据存储在 sdcard 中。当插入的数据超过时,最近最少使用的文件被删除并存储新文件。
例如:Facebook Android 使用磁盘缓存。
在应用程序级别或设置>管理应用程序>应用程序名称中清除缓存内存。
每个应用程序都有自己的缓存内存,一个应用程序无法访问其他应用程序的缓存内存。
欲了解更多信息,请访问:
http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html#disk-cache
从评论中您似乎想要做的是将一个文件存储在永久内存中,然后将其删除:
所以我建议您使用getCacheDir()方法来获取写入文件的位置,然后使用createTempFile()创建一个临时文件,并在不再需要时使用delete()方法。
这是一个 StackOverflow 帖子,展示了如何做到这一点:https ://stackoverflow.com/a/6485850/906362