我有以下情况:
我有一个服务,定期检查互联网上的新数据,
用户可能想要请求立即更新...
...在这种情况下,我使用Messenger来请求服务寻找新数据
以下是问题:
通知用户请求正在进行,但可能需要一段时间,可能会失败,永远不会返回...
目前我收到一条消息(使用Messenger)从服务返回到活动通知请求的结果,或者,如果我没有收到消息,则在x秒内我通知用户请求不成功。< / p>
答案 0 :(得分:3)
你已经掌握了基础知识,所以没有其他建议。我将向您展示一些替代方案:
答案 1 :(得分:2)
您可以考虑 乐观呈现 / 乐观更新 - 在客户端更新用户界面的模式好像它在服务器上成功了。 一旦您从服务器获得响应,您就会相应地更新UI。您可以使用google hangouts.等新设计来引用应用程序
有关详细信息,请参阅此讨论:
我想使用这种方法可以为您的应用提供更好的可用性。
目前的实施看起来不错。但是,您可以通过以下讲话来改进它 - https://www.youtube.com/watch?v=BlkJzgjzL0c
答案 2 :(得分:1)
如果您将此视为模型视图控制器问题,则此处的问题是缺少表示服务状态的模型。当服务正在执行刷新时,这个&#34;状态&#34;需要反映在您的UI中。因此,服务需要在UI可以访问的位置记录此内容。
一个选项只是一块共享内存,例如Singleton对象甚至是静态成员变量(不推荐)。另一种选择是将该状态保存在数据库中。
另一个问题是在此状态发生变化时通知用户界面。正如其他帖子所提到的,有多种方法可以做到这一点,例如LocalBroadcast,像Otto这样的消息总线,ContentObservers等。