如果应用程序进入后台然后来到Foreground,Robospice请求永远不会结束?

mob*_*dev 5 android robospice

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

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

Sni*_*las 4

这对于 RoboSpice 来说显然是不可能的,而且确实有一个很好的理由:这将是一个非常糟糕的主意。

当您的 Activity 终止(onStop)时,Android 会对其实例进行垃圾回收。为了做到这一点,它不应该被任何东西引用。这就是 RS 强制删除所有侦听器的原因。通常,侦听器持有对活动的引用(作为内部类),RS 的最佳成就是让活动正常消亡并进行垃圾收集。

因此,做你想做的事情显然会导致内存泄漏,而且大多数时候会导致崩溃:当一个 Activity 不再显示时,你想更新它的 UI 吗?看起来有点笨拙,不是吗?

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