【问题标题】:Memory cache in Android [closed]Android中的内存缓存[关闭]
【发布时间】:2013-04-02 10:22:16
【问题描述】:

我正在尝试将一个视频存储在内存缓存中,视频完成后它会从缓存中删除。并且在播放过程中,该视频文件无法从缓存中删除。

【问题讨论】:

  • 你想做什么?缓存 bitamps?
  • 您必须更好地解释您的问题。你想缓存什么?位图?文件?交易? json?你想在哪里缓存它:在 RAM 内存中还是永久?
  • @Raghunandan,我正在尝试存储一个视频,我应该在完成后删除该视频。
  • @Naveen 编辑你的问题并清楚地解释你打算做什么以及你面临的问题是什么?

标签: android


【解决方案1】:

每个 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

【讨论】:

    【解决方案2】:

    从 cmets 看来,您似乎正在尝试将一个文件存储在永久内存中,然后将其删除:

    所以我建议您使用getCacheDir() 方法获取写入文件的位置,然后使用createTempFile() 创建一个临时文件,并在不再需要时使用delete() 方法。

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

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 2013-01-12
      • 2013-03-22
      • 2014-12-11
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多