我已经在我的应用中实现了BitmapSpiceManager
和BitmapRequest
,以便下载图像或从缓存中获取(如果已经下载)。问题是遵循RoboSpice给出的示例,缓存只能在一个Activity
内使用。如果您结束该活动(例如,返回到前一个活动)然后再次启动它,则缓存不包含之前加载的内容(已清除)。
我正在遵循您拥有包含BitmapSpiceManager
的基本活动的模式,并且在我的子类活动中,我使用管理器发出请求。这将获取文件并缓存它,我通过挂钩一个按钮删除了ImageView然后再次加载图像,证明它在活动中再次来自缓存。
是否可以将一个活动中的图像缓存在另一个活动中?我需要一个应用程序范围的SpiceManager。理想情况下,缓存的项目可能会持续超出应用程序运行,即缓存几个小时。是否有更好的方法来构建应用程序中的RoboSpice代码而不是示例?
如果我继承BitmapSpiceService
并覆盖createCacheManager()
方法会有帮助吗?我可以使用DiskLruCache
,但BitmapSpiceService
使用InFileBitmapObjectPersister
表示将文件写出来,所以我认为它是相同的。我不确定为什么在Activity死亡时清除缓存。
答案 0 :(得分:0)
您在前几段中描述的行为正是RoboSpice的工作原理。无论您在整个应用程序中有多少SpiceManager
个,它们都将绑定到清单中声明的相同SpiceService
。只要在cacheExpiryDuration到期之前调用SpiceManager.execute并使用相同的requestCacheKey,数据将从缓存而不是网络返回。
您可以发布用于提出请求的代码吗?