5

我正在开发一个使用 RoboSpice 库来调用 REST API 的应用程序。除了一件事,图书馆的一切都很好。我不使用 RoboSpice 中可用的缓存,因此所有请求都是在没有缓存的情况下发出的。现在,当任何请求正在进行并且用户按下主页按钮时,将调用 onStop() 调用 spice 管理器的 shouldStop() ,这会取消注册所有请求侦听器以获取通知。当应用程序再次进入前台时,由于未通知侦听器,因此不会发生 UI 更新。

我不想使用 Robospice 提供的缓存。有没有其他方法可以在不使用缓存的情况下获取 UI 更新通知?

4

1 回答 1

4

RoboSpice 显然不可能,而且确实有充分的理由:这将是一个非常糟糕的主意。

当您的活动终止(onStop)时,Android 想要垃圾收集它的实例。要做到这一点,它不应该被任何东西引用。这就是为什么 RS 强制要求删除所有侦听器。通常,侦听器持有对活动的引用(作为内部类),RS 的最佳成就是让活动正常终止并收集垃圾。

所以,做你想做的事显然会导致内存泄漏,而且大多数时候会导致崩溃:当一个活动不再显示时,你想更新它的 UI 吗?看起来有点尴尬,不是吗?

也许最简单的方法是使用非常有限的缓存,或者每次活动进入 onStart 时执行所有请求。

于 2014-01-15T15:28:58.263 回答