は、私は、次のシングルトンを有する:件名出力タイプを変更するにはどうすればよいですか?
public abstract class Store<Input, Output> {
private BehaviorSubject<Input> subject = BehaviorSubject.create();
private Observable<Output> observable; //also a singleton
public final Subscription register(Subscriber<Output> subscriber) {
if (observable == null) {
observable = subject.compose(getTransformer()); //is this hot?
}
return observable.subscribe(subscriber);
}
public final void unregister(Subscription subscription) { //unregister }
//applies operators to the original stream to transform Input -> Output
protected abstract Observable.Transformer<Input, Output> getTransformer();
public final void onNext(Input event) { subject.onNext(event);}
}
問題:デバイスを回転させるか、アプリを観察ダイを最小限に抑える場合は、(ネットワークの実行を中止します)。 subject.compose()
は冷たい観察可能なものを返しますか?もしそうなら、なぜですか?
publish.autoConnect()
/share()
を使ってみましたが、それは熱くなりましたが、回転しても死ぬことはありませんでしたが、BehaviourSubject
が壊れています。私はデバイスを回転させ、私はサブスクリプション時に最初の値を取得しません。
subject
の出力値を変換するにはどうすればsubject
として動作するのですか? SAMPLE PROJECT
LOG:
USER:ヒットボタンネットワーク
Dから取得する:
ネットワークから取得中... D:メモリ
にキャッシュ:ネットワーク要求が正常に
Dを実行 USER:ヒットネットワークから再度取得するボタン
D:ネットワークから取得中...
USER:私は間違っている、すべてに沿って科目を使用してきた、.unsubscribe()
map''のように、私がPRODで、このアプローチを使用していると私はこのことについて記事を書きましたその他。あなたの破損は、変圧器や 'onDestroy'で登録を解除する方法のように、質問に表示されていない何かが原因である可能性があります。 – akarnokd
こんにちは@akarnokd、ここに私の変圧器がありますhttps://github.com/feresr/RxStore/blob/master/app/src/main/java/com/feresr/rxstore/JokesStore.java質問が更新されました。提供されたプロジェクト – feresr
問題は科目とは関係ありませんが、アプリが一時停止したときにObservableを実行し続ける方法:http://blog.danlew.net/2017/01/16/the-activity-lifecycle-vs-the -world/ – akarnokd