我想知道是否需要spicemanager的shouldstop()方法。我的想法是应该从activity/fragment中解除可能的侦听器绑定,但是如果这个activity无论如何都要被终止,这有关系吗?垃圾收集器仍将清理活动/片段,而后台服务仍将各自完成。还是我错了?当你忘记了后台线程中的一些引用时,android真的会泄漏吗?
source code中有一些(误导)注释:对于shouldStop()它表示它将异步解除绑定,对于shouldStopandJoin()则同步解除绑定。但是shouldstop调用shouldstopandjoin,shouldstopandjoin注释是说它主要是一种测试方法。那么我们真的需要在活动的onstop()回调中调用shouldstop吗?
我之所以这么问是因为我希望在应用程序上下文中有一个spicemanager实例,它没有特殊的方法来处理清理或停止事件。所以我想确定没有漏水之类的东西。要清楚的是,不是在应用程序上下文中,而是一个自定义的“控制器”,它从应用程序上下文启动并管理所有的后台内容,比如robospice请求或位置信息。我试图模拟mvc模式,其中所有的逻辑实际上都独立于只有@subscribe方法来更改ui的活动和片段。
编辑:实际上,如果我从应用程序上下文调用它,那么它与活动或片段是不同的。即使活动或片段确实泄漏,应用程序也不应该泄漏,对吧?
谢谢你的评论。

最佳答案

当你忘记了后台线程中的一些引用时,android真的会泄漏吗?
是的,是的。这正是一个非常好的方法来制造泄漏。
那么我们真的需要在活动的onstop()回调中调用shouldstop吗?
是的,您这样做是为了1)防止泄漏,2)防止在启动上下文死亡后触发回调,这将导致崩溃。
但是您是对的,javadocs可能会导致混乱。shouldstopandjoin是为测试而调用的(请将其视为private+tests),shouldstop是公共的。
即使活动或片段确实泄漏,应用程序也不应该泄漏,对吧?
正确的。当应用程序死亡时,这意味着整个应用程序进程都死掉了,没有任何东西可以泄漏到Java中的虚拟机之外。因此,对于应用程序类,没有办法正确调用shouldstop,也不需要它。

08-18 07:22