Android Observer在被通知一次后被删除?

时间:2012-08-11 03:07:14

标签: java android observer-pattern

我有一个简单的Android应用程序,其中包含一个带有Observable对象foo的Activity。我有一个在我的活动中实现Observer的私有内部类,它使用传递给update的参数更新GUI。在创建活动时,我使用foo.addObserver附加Observer。

然而,我的观察者只被通知一次,然后它不再接收更新。当我试图发出第二个通知时,我已经进入了foo并删除了我的观察者。以前有人经历过这个吗?可能是什么导致了这个?我不知道如何进一步解决这个问题。这看起来很简单。除此之外我可能正在做的事情导致了这种情况?如果有人有任何想法,我可以透露更多我的申请。

相关的代码如下(无参数和范围)

活动

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

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

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

1 个答案:

答案 0 :(得分:0)

我遇到的(令人尴尬)问题是我有多个Foo实例并且只注册了一个侦听器一个特定的对象实例而没有记住我已经创建了多个对象实例,这就是为什么数组的第一次更新后,观察员是空的;我正在看另一个对象!

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