Я пытался реализовать статический Observable в моем подклассе Application, но он не работает. Нет исключений или сообщений об ошибках, но мой callback update () не вызывается.
MyApplication.java
public class MyApplication extends Application{
public static Observable appObserver = new Observable();
public void onCreate(){
super.onCreate();
}
}
Foo.java
MyApplication.appObserver.notifyObservers( "Hello world" );
BarFragment.java
public class BarFragment extends Fragment implements Observer{
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
MyApplication.appObserver.addObserver(this);
}
@Override
public void onDestroy() {
MyApplication.appObserver.deleteObserver(this);
super.onDestroy();
}
@Override
public void update(Observable observable, Object data) {
Log.i("BarFragment", data.toString()); // Should log, but doesn't
}
}
Более того, я попытался написать свою собственную заметку Observable, а затем все заработало как шарм, просто заменив public static Observable appObserver = new Observable();
на public static MyObservable appObserver = new MyObservable();
MyObservable.java
public class MyObservable {
protected List<Object> observers = new ArrayList<Object>();
public void addObserver(Object observer){
observers.add(observer);
}
public void notifyObservers(Object data){
for( int i=0; i<observers.size(); i++ ){
((Observer) observers.get(i)).update(null, data);
}
}
}
Чего мне не хватает?
Я тестирую это на Nexus One с Android 2.3.6, если это имеет значение.