根据在我们控制范围内发生的事件制作Observable
是很容易的;无论是来自视图(按钮点击,附加/分离事件)还是非视图(REST请求),将Observable
包裹起来都是相对简单和直接的。
但是当涉及到框架事件时呢?
作为一个例子,假设我想创建一个Observable
,它将向它的订阅者发送每次后退按钮,我该怎么做呢?
我所知道的处理后退按钮的两种方法来自Activity
的回调方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
和
@Override
public void onBackPressed() {
// do something on back.
return;
}
如何将其转换为Observable
?
您可以使用Subject
s来实现此目的。例如:
class MainActivity extends Activity {
private final Subject<Void, Void> subject = PublishSubject.create();
@Override
public void onBackPressed() {
subject.onNext(null);
super.onBackPressed();
}
public Observable<Void> listenToBackPress() {
return subject;
}
}