2012-08-11 104 views
0

我有一个简单的Android应用程序,其中有一个Observable对象foo的Activity。在我的活动中,我有一个私人内部类实现Observer,它使用传递给更新的参数更新GUI。创建活动时,我将Observer与foo.addObserver连接起来。Android观察者在被通知一次后被删除?

但是,我的观察者只被通知一次,然后它不会收到更多更新。当我尝试发送第二个通知时,我已经步入foo,并且我的观察者被删除。有没有人经历过这个?什么可能导致这个?我不知道如何进一步解决这个问题。这似乎很简单。有可能是我正在做的事情导致这种情况?如果有人有任何想法,我可以透露更多我的申请。

此相关代码如下(没有参数和范围)

活动

onCreate 
    ... 
    foo = new Foo(); 
    foo.addObserver(new FooObserver()); 
    ... 

class FooObserver implements Observer { 
    update() 
    updateGUI(); 

arbitraryMethod() 
    ... 
    setChanged(); 
    notifyObservers(argument); 
+1

我可以肯定地告诉你,android中没有任何东西会在第一次之后“删除”你的观察者。当你说“已删除”时,你的意思是你的观察员在第一次之后等于空吗?无论如何 - 定位是你的错误 - 你必须发布更多的代码。 – 2012-08-11 04:25:57

+0

好吧,考虑到我的代码更多地进一步解释它之后,我意识到我在不同的地方引用了Foo的不同实例,而不是将该类视为单例(或使用相同的对象)。显然,这是问题的原因。我该怎么处理这个问题?我应该删除它吗? – 2012-08-11 04:39:29

+0

我建议你回答你自己的问题,并说明问题是什么 – 2012-08-11 04:50:03

回答

0

我具有(尴尬)的问题是我有多个Foo实例,只是将一个特定的监听器注册没有记住我创建了对象的多个实例,这就是为什么在第一次更新之后观察者数组为空的原因。我正在看另一个物体!

对此有很多解决方案,但在我的情况下工作的是使对象成为单身。

相关问题