Android ReactiveLocation ライブラリを使用して、定期的な位置情報の更新を受信しています。必要に応じてすぐに使用できる最新の位置情報を常に保持できるように、自分のアプリで位置情報を使用していない場合でも、位置情報の更新を受信し続けたいと考えています。
これが、アプリのコア コンポーネントで位置情報の更新を開始する方法です。最新の値と新しく検出された場所を、アプリのチェーンのさらに下にあるすべてのサブスクライバーに再公開したいと考えています。これreplay(1)
が の目的です。
locationProvider = new ReactiveLocationProvider(context);
locationObservable = locationProvider.getUpdatedLocation(locationRequest)
.replay(1);
アプリの別の場所で、この再公開された obrvable をサブスクライブします。
locationSubscription = locationObservable
.filter(new Func1<Location, Boolean>() {
@Override
public Boolean call(Location location) {
return location.getAccuracy() < LOCATION_ACCURACY_THRESHOLD;
}
})
.subscribe(new Action1<Location>() {
@Override
public void call(Location location) {
}
});
これは仕事をしているように見えます: 私の最終的なサブスクライバーは最新の場所をすぐに返し、新しい更新を受け取り続けますが、最終的なサブスクライバーがチェーンのどこかに未使用の場所の巨大なバッファーを構築していないことを確認したいです。購読されていません。私はRx初心者です。この状況に背圧はどのように適用されますか? 私replay(1)
が期待していることを行っており、最新の場所以外の不要な場所をすべて破棄していますか?