Android 来自数组的ReplySubject

Android 来自数组的ReplySubject,android,rx-java,Android,Rx Java,在android应用程序的上下文中,我想从从保存的捆绑包中检索的数组中创建一个ReplaySubject 到目前为止,我已经: subject = ReplaySubject.create(); for (SomeDto dto : dtos) { subject.onNext(dto); } 我希望有一种更直接的方法来避免重复。你是说 如果您从捆绑包中检索的DTO列表是恒定的,并且从捆绑包中检索后不需要通知订阅者更改,那么您可以只使用标准的可观察列表,而无需使用主题 列出DTO;//从bu

在android应用程序的上下文中,我想从从保存的捆绑包中检索的数组中创建一个
ReplaySubject

到目前为止,我已经:

subject = ReplaySubject.create();
for (SomeDto dto : dtos) {
 subject.onNext(dto);
}
我希望有一种更直接的方法来避免重复。你是说

如果您从捆绑包中检索的DTO列表是恒定的,并且从捆绑包中检索后不需要通知订阅者更改,那么您可以只使用标准的可观察列表,而无需使用主题

列出DTO;//从bundle中获取要执行的某些操作的列表。
可观测的dtoObservable=可观测的(DTO);
每次订阅dtoObserbale时,它都会重播所有项目

如果您的订阅者需要在初始值之外通知DTO列表的更改,那么您这样做就可以了

编辑:另一个您可能喜欢的想法。从从捆绑包中检索的DTO创建一个可观察的。然后将其与DTO主题连接起来

列出DTO;//从bundle中获取要执行的某些操作的列表。
ReplaySubject subject=ReplaySubject.create();
可观测数据可观测=
可观察
.来自(dtos)
.concatWith(主题);
//后来某个时候。
主题.onNext(另一个to);
每个订户都将看到所有值。下面是一个字符串示例:

final List strings=Arrays.asList(“1”、“2”);
最终ReplaySubject StringsObject=ReplaySubject.create();
最终可观察到的=
可观察
.来自(字符串)
.concatWith(StringsObject);
可观察的
.订阅(新操作1(){
@凌驾
公共无效调用(字符串s){
logger.v(“1-”+s);
}
});
StringsObject.onNext(“3”);
可观察的
.订阅(新操作1(){
@凌驾
公共无效调用(字符串s){
logger.v(“2-”+s);
}
});
StringsObject.onNext(“4”);
可观察的
.订阅(新操作1(){
@凌驾
公共无效调用(字符串s){
logger.v(“3-”+s);
}
});
StringsObject.onNext(“5”);
产出如下:

stringobserve1-1
第1-2条
第1-3条
第2-1段
第2-2段
第2-3段
第1-4条
第2-4段
第3-1条
第3-2条
第3-3条
第3-4条
第1-5条
第2-5段
第3-5条

我也遇到了同样的问题,但API中似乎没有其他东西可以创建ReplaySubject。对主体创作的这种限制可能有一个根本原因。我们应该调查观察对象和主题(即冷热观察对象)之间的核心实现差异。@ffarquet我也在小组中发布了一个问题以防万一谢谢你的回答(更新了inial post中的拼写),我的列表不是恒定的,我需要代码中主题的功能。