正如前文
Agera官方Wiki翻译(二)——响应式编程所述,被观察者(observable)表示事件源,updatable 观察这些事件。updatable 使用
Observable.addUpdatable(Updatable)
注册对被观察者(observable)的观察,使用
Observable.removeUpdatable(Updatable)
解除注册。事件以
Updatable.update()
的形式被分发到 updatable。Activity 可以通过如下方式观察来自被观察者(observable)的事件:
// Activity 实现 Updatable,说明它要响应事件public class MyUpdatableActivity extends Activity implements Updatable {// 事件源private Observable observable;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);observable = new MyObservable();}@Overridepublic void update() {// Act on the event// 有事件发生时就会调用 update}@Overrideprotected void onResume() {super.onResume();// 生命周期调整observable.addUpdatable(this);update();}@Overrideprotected void onPause() {super.onPause();// 生命周期调整observable.removeUpdatable(this);}}
Updatable 的注册与取消注册必须成对使用。多次注册同一个 updatable 是非法操作,对未注册的 updatable 取消注册也是非法操作,多次取消 updatable 也属于非法操作,诸如此类。
活动生命周期和事件链
被观察者(observable)通过被观察(至少被一个 updatable 注册)这一行为变为
活动状态,通过被取消观察(没有被任何 updatables 注册)变为
不活动状...
继续阅读