【发布时间】:2018-01-22 12:55:04
【问题描述】:
我正在尝试使用 robospice 实现一个非常简单的案例:登录屏幕。单击登录按钮时,会显示加载动画并使用SpiceManager.execute(..) 发出请求(当然没有缓存。由于它是登录请求,因此我每次都需要对服务器进行实际调用)。
所以,为了处理屏幕旋转等,在Activity.onStart() 中我应该使用SpiceManager.addListenerIfPending(..),如果请求实际上是待处理的,我应该在不做任何实际请求的情况下显示加载动画。
问题是:PendingRequestListener 没有onRequestExists() 方法。它只有onRequestNotFound()。
一种可能(但不令人满意)的解决方案是始终绘制加载屏幕,然后调用addListenerIfPending(..),然后删除onRequestNotFound() 中的加载动画。如果没有真正的请求,这会创建“闪烁”的加载屏幕,这看起来非常糟糕。实现所需行为的正确方法是什么?
【问题讨论】:
-
使用缓存。见stackoverflow.com/a/27136012/2440169,类似问题。
-
看起来像一个非常肮脏的黑客,这也需要编写正确的缓存实现......我想我会尝试,但实际上我希望从 Robospice 找到足够的 API。
-
如果您使用来自 Robospice 扩展(Spring、Google HTTP 客户端、Retrofit)的预定义服务,则缓存已经实现。