0

我正在尝试了解如何使用 android LRU 缓存,以便我可以在我的应用程序中使用它。

我有一个关于图像的应用程序。一个活动显示图像的 GridView,另一个显示全屏图像,除了这两个活动之外,图像还以各种其他方式使用。现在大约 85% 的图像来自我的服务器。所以我关于 LRU 缓存的问题是:我是否将图像直接从服务器加载到 LRU 缓存中?或者我是否将图像从服务器加载到我的应用程序的磁盘空间中,然后在需要时将这些本地存储的图像加载到 LRU 缓存中?

我困惑的原因是这样的。我的应用大约 15% 的图像使用来自用户的本地设备,应用通过意图获取

public void dispatchGalleryIntent(View view) {
  Intent gallery = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  gallery.setType("image/*");
  startActivityForResult(gallery, GALLERY_PHOTO_REQUEST_CODE);
}

显然我可以将从本地图像文件夹中获得的这些图像加载到 LRU 缓存中。在我阅读 LRU 缓存之前,我的印象是这些本地图像实际上已经被缓存了。无论如何,我的计划是只缓存我从服务器获得的图像。但是我想知道我是否应该将它们存储在我的应用程序的内部存储中,然后按需将它们传递给 LRU 缓存,或者 LRU 缓存是否已经为我处理了存储。换句话说,如果我的应用程序被杀死,是否会导致 LRU 缓存清空?重申我的担忧,我希望从服务器获得的图像能够在崩溃和应用程序被杀死时幸存下来。那么 LRU 缓存本身是否适合这种情况,或者我应该将图像存储在磁盘上,然后根据需要加载 LRU 缓存?

4

1 回答 1

0

The LRUCache is an in memory cache for objects. It has nothing to do with anything on the file system, and it is not persistent across sessions. If you want to download files from a server and have them stick around, you need to save them to the file system. Then if you're dealing with a lot of images you may want to put the Bitmap objects into an LRUCache.

于 2014-03-19T02:05:41.950 回答