Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 房间可流动缓存_Android_Rx Java_Rx Android_Android Room - Fatal编程技术网

Android 房间可流动缓存

Android 房间可流动缓存,android,rx-java,rx-android,android-room,Android,Rx Java,Rx Android,Android Room,我将房间(1.0.0.rc1)与RX一起使用,我的Dao定义如下: @Dao interface AccountDao { @Query("SELECT * FROM Account ORDER BY name") fun all(): Flowable<List<Account>> } dao .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread())

我将房间(1.0.0.rc1)与RX一起使用,我的Dao定义如下:

@Dao
interface AccountDao {
    @Query("SELECT * FROM Account ORDER BY name")
    fun all(): Flowable<List<Account>>
}
dao
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe { accounts = it }
我在代码中有不止一个订阅flowable的位置。第一个订阅的人获得数据,其他人没有


我如何制作一个可观察的,每次有人订阅时都会发出实际内容,并且在数据更改时也会通知每个订阅者?

您可以使用
replay
在每次有人订阅时发出最新值。并使用
distinctUntilChanged
仅在数据更改时通知

以下是示例:

import io.reactivex.Observable;
import io.reactivex.subjects.BehaviorSubject;

public class Q47000608 {
  public static void main(String[] args) {
    BehaviorSubject<Integer> bs = BehaviorSubject.createDefault(1);
    Observable<Integer> o = bs.replay(1).autoConnect().distinctUntilChanged();
    o.subscribe(i -> System.out.println("s1 accept " + i));
    bs.onNext(2);
    o.subscribe(i -> System.out.println("s2 accept " + i));
    o.subscribe(i -> System.out.println("s3 accept " + i));
    bs.onNext(3);
    o.subscribe(i -> System.out.println("s4 accept " + i));
    bs.onNext(4);
  }
}

谢谢你,先生,我发现问题不在于我的flowable,而在于你的回答,我能够发现它,所以再次感谢:)
s1 accept 1
s1 accept 2
s2 accept 2
s3 accept 2
s1 accept 3
s2 accept 3
s3 accept 3
s4 accept 3
s1 accept 4
s2 accept 4
s3 accept 4
s4 accept 4