为一个全球api制作一个Observable / Flowable的干净方法,比如说
public void log(String s)
所有组件都使用此日志方法,该方法当前具有侦听器,并且各种侦听器记录到各种日志记录。我想让它成为一个可观察的,这样多个订阅者就可以订阅这个observable并登录到各种文件/ db。
我希望我不必重做遗留类(可以访问库的代码)。
目前我将字符串添加到数据结构这样的队列中,这是我可观察的,并使用订阅者来实现我想要的。 一个更通用的问题是,如何为无限源创建一个observable(对我来说,log方法是源)以及建议使用什么数据结构来保存这个无限源的数据,这些数据可以成为一个很好的可观察源。
任何指针/推荐/片段都将不胜感激。
[编辑]
正如响应评论中所建议的那样,使用PublishSubject解决了我的问题
当我需要订阅时,我访问主题对象并在其上调用订阅。
static PublishSubject<LogEvent> subject = PublishSubject.create();
public static void log (LogEvent evt) {
subject.onNext(evt);
}