Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 在使用RoboSpice执行网络请求之前从缓存获取数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用RoboSpice,并希望在我的应用中有以下行为:

>用户启动需要来自服务器的数据的活动
> spiceManager检查数据是否被缓存,如果是,则返回它.
>无论是否返回了缓存的数据,都会向服务器发出请求
>当从服务器到达新数据时,我用它更新UI(如果活动仍处于活动状态)

它应该像facebook app:当你打开它时,你会立即看到一个过时的时间线,并最终收到更新.

起初我认为spiceManager.getFromCacheAndLoadFromNetworkIfExpired()是实现这一目标的好方法,但是如果数据被缓存并且有效,它只会返回缓存,而不会立即发出网络请求.我已经使用DurationInMillis.ALWAYS_EXPIRED和DurationInMillis.ALWAYS_RETURNED尝试了它.

@R_271_10675@用getFromCache()来检索缓存数据,然后从onrequestsuccess()中调用带有always_expired作为参数的spiceManager.execute()吗?或者有更好/更简单的方法来做到这一点?

在此先感谢您的帮助!

[编辑]
这些链接可能会增加讨论:
https://groups.google.com/forum/#!topic/robospice/n5ffupPIpkE/discussion
https://groups.google.com/forum/#!topic/robospice/LtoqIXk5JpA

解决方法

我有同样的任务,并使用 here方法

>如果存在,则从缓存加载视图数据
>在此期间,请求从网络加载新版本的请求.如果数据已更改,请更新视图.

这是示例代码

SpecialOffersrequest request = new SpecialOffersrequest();
spiceManager.getFromCache(SpecialOffer.List.class,request.getCacheKey(),ALWAYS_RETURNED,new SpecialOffersrequestListener());
spiceManager.execute(request,request.getCacheExpiryDuration(),new SpecialOffersrequestListener());

如您所见,一个SpecialOffersrequestListener用于get-from-cache和get-from-network请求.但是,我必须制作一个小技巧(请参阅下面的dataInCache用法)来处理脱机情况,如果要显示缓存中的某些内容,请不要担心用户“无连接”:

private final class SpecialOffersrequestListener implements requestListener<SpecialOffer.List> {
    @Override
    public void onrequestFailure(SpiceException spiceException) {
        if (spiceException instanceof NoNetworkException && dataInCachE) {
            // Ignore network problems if there is some data in the cache.
            return;
        }

        ActionHelper.showError(getActivity(),"Failed to load special offers.",spiceException);
    }

    @Override
    public void onrequestsuccess(SpecialOffer.List result) {
        dataInCache = true;
        ...
    }
}

大佬总结

以上是大佬教程为你收集整理的android – 在使用RoboSpice执行网络请求之前从缓存获取数据全部内容,希望文章能够帮你解决android – 在使用RoboSpice执行网络请求之前从缓存获取数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。