使用RoboSpice的Android应用程序范围内的SpiceManager

时间:2015-05-06 07:46:16

标签: android caching robospice

我已经在我的应用中实现了BitmapSpiceManagerBitmapRequest,以便下载图像或从缓存中获取(如果已经下载)。问题是遵循RoboSpice给出的示例,缓存只能在一个Activity内使用。如果您结束该活动(例如,返回到前一个活动)然后再次启动它,则缓存不包含之前加载的内容(已清除)。

我正在遵循您拥有包含BitmapSpiceManager的基本活动的模式,并且在我的子类活动中,我使用管理器发出请求。这将获取文件并缓存它,我通过挂钩一个按钮删除了ImageView然后再次加载图像,证明它在活动中再次来自缓存。

是否可以将一个活动中的图像缓存在另一个活动中?我需要一个应用程序范围的SpiceManager。理想情况下,缓存的项目可能会持续超出应用程序运行,即缓存几个小时。是否有更好的方法来构建应用程序中的RoboSpice代码而不是示例?

如果我继承BitmapSpiceService并覆盖createCacheManager()方法会有帮助吗?我可以使用DiskLruCache,但BitmapSpiceService使用InFileBitmapObjectPersister表示将文件写出来,所以我认为它是相同的。我不确定为什么在Activity死亡时清除缓存。

1 个答案:

答案 0 :(得分:0)

您在前几段中描述的行为正是RoboSpice的工作原理。无论您在整个应用程序中有多少SpiceManager个,它们都将绑定到清单中声明的​​相同SpiceService。只要在cacheExpiryDuration到期之前调用SpiceManager.execute并使用相同的requestCacheKey,数据将从缓存而不是网络返回。

您可以发布用于提出请求的代码吗?