2012-08-11 44 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實例,只是將一個特定的監聽器註冊沒有記住我創建了對象的多個實例,這就是爲什麼在第一次更新之後觀察者數組爲空的原因。我正在看另一個物體!

對此有很多解決方案,但在我的情況下工作的是使對象成爲單身。

相關問題