我遇到了一个奇怪的问题,现在让我难过了几天。首先是一些背景信息:
我有一个与第三方服务绑定的活动(作为库提供给我)。只要客户端请求执行操作,此服务就会向客户端(我的活动)发送异步回调。该服务永远不会以startService()和stopService()调用启动;当我需要服务时执行绑定,当我完成时解除绑定。我在任何时候都不会有多个活动绑定到该服务。
我的问题:
用户启动我的活动(让我们称之为实例A)。我绑定到onCreate()中的服务并发出请求。我收到服务的回调并相应地设置一些局部变量。一旦我完成了我需要做的事情,我就打电话给finish()。调用onDestroy()然后执行un bind服务。我现在的假设是服务实例和我的活动都不能再被引用了。
现在,在A完成后,用户再次启动我的激活(让我们调用此实例B)。我再次绑定onCreate并发出请求。然而,当我收到回调时,我注意到该服务已经回复了我的旧“ghost”实例A.我现在使用所有实例A的局部变量而不是使用这个新实例B.我甚至打印出“这个“在绑定之前引用,在收到回调之后再次引用,并且能够看到引用从实例B更改为实例A的。我的活动中的执行继续进行,但由于我的局部变量现在在A执行结束时被错误地设置为旧状态,因此B的执行失败。
所以有几个问题:
感谢您提供任何见解。
-Jason
答案 0 :(得分:0)
原来这是第三方服务。