缓存图像的理想位置是什么?

时间:2009-12-30 11:36:59

标签: android lazy-loading performance

我从远程服务器获取应用程序中的大量缩略图,并在列表视图中延迟加载这些缩略图。

图像提取在后台AsynTask中运行,完成后,使用SoftReferences将获取的图像存储在HashMap中。

这很好用但是当缓存中的图像得到GC时,必须重新运行提取。

我可以将它们存储在SD卡上,这样就不会重新获取。

但我没有采用这种方法,因为它会在SD卡上造成混乱。

当活动/应用程序完成/退出时,是否可以替换这些类型的临时文件夹?

缓存图片的“理想场所”是什么?任何建议,示例项目或指针都将不胜感激。

2 个答案:

答案 0 :(得分:5)

您应该检查文件数据存储选项:
http://developer.android.com/guide/topics/data/data-storage.html
文件正在保存在应用程序目录中,因此任何地方都不会出现问题。最终将使用该应用删除文件。您还可以实现一些在应用启动时清除缓存的方法(例如,删除超过2周的文件)。

答案 1 :(得分:0)

您应该能够在SD卡上找到SQLite DB。这样可以让您拥有相当干净的接口/缓存空间,同时将数据保存在非常有限的内部手机内存中。您可以通过调用openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)来指定DB的位置。这可能比您想要的工作量更多,但是当您使用一行或两行代码卸载应用程序时,您应该能够清除数据库。
  更多来自此处的文档: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html