如何基于框架回调事件创建一个Observable



根据在我们控制范围内发生的事件制作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;
    }
}

相关内容

  • 没有找到相关文章

最新更新