我需要缓存来自网络的图像(仅限5个或最多100个),并在列表视图中显示。如果用户选择列表视图的一行,则可以清除缓存。我查看了一些示例。一些使用外部存储,一些使用内部和外部,还有一些对象...
那么,使用内部存储(通过getCacheDir() http://developer.android.com/guide/topics/data/data-storage.html#filesInternal)和对象缓存(类似于WeakHashMap或HashMap >)有哪些优缺点?
软引用的问题似乎是它们可能会被过早地回收(SoftReference gets garbage collected too early)。那么Android内部存储怎么样?参考说:“这些文件将是设备存储空间不足时首先删除的文件。”
使用对象缓存或临时内部存储是否有任何区别?除了对象缓存应该会更快一些。
那么,使用内部存储(通过getCacheDir() http://developer.android.com/guide/topics/data/data-storage.html#filesInternal)和对象缓存(类似于WeakHashMap或HashMap >)有哪些优缺点?
软引用的问题似乎是它们可能会被过早地回收(SoftReference gets garbage collected too early)。那么Android内部存储怎么样?参考说:“这些文件将是设备存储空间不足时首先删除的文件。”
使用对象缓存或临时内部存储是否有任何区别?除了对象缓存应该会更快一些。
LruCache
解决SoftReference问题,而且不必太担心实现:http://developer.android.com/reference/android/util/LruCache.html,同时也可以在兼容性库中找到。 - kabuko