Rx java RxJava share()未按预期工作

Rx java RxJava share()未按预期工作,rx-java,Rx Java,我有一项活动,我正在做以下工作 fun getJust(): Observable<String> { Log.e("TEST", "getting just") return Observable.just("ABC") } private fun stream(): Observable<String> { return getJust() .doOnSubscribe

我有一项活动,我正在做以下工作

    fun getJust(): Observable<String> {
        Log.e("TEST", "getting just")
        return Observable.just("ABC")
    }

    private fun stream(): Observable<String> {
        return getJust()
            .doOnSubscribe { Log.e("TEST", "OnSubscribe") }
            .doOnDispose { Log.e("TEST", "OnDispose") }
            .doOnNext { Log.e("TEST", "OnNext") }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val st = stream()
            .share()
        val success = st
            .map { "Success" }
        val fail = st
            .map { "Fail" }
        Observable.merge(success, fail)
            .subscribe()
    }
实际日志:

2020-02-25 15:11:20.202 1015-1015/com.example.rxretrytest E/TEST: getting just
2020-02-25 15:11:20.263 1015-1015/com.example.rxretrytest E/TEST: OnSubscribe
2020-02-25 15:11:20.264 1015-1015/com.example.rxretrytest E/TEST: OnNext
2020-02-25 15:11:20.264 1015-1015/com.example.rxretrytest E/TEST: OnSubscribe
2020-02-25 15:11:20.265 1015-1015/com.example.rxretrytest E/TEST: OnNext
我有以下问题:

  • 为什么即使我放入share(),onSubscribe/onNext也会被调用两次

  • 如果我认为这是因为观察到的。单次发射后立即完成,那么为什么不“只得到”被调用两次。

    “公正”在可观察的链条之外。
    getJust()
    函数只被调用一次,因为
    stream()
    只被调用一次。“getJust”在可观察链之外。
    getJust()
    函数只调用一次,因为
    stream()
    只调用一次。
    2020-02-25 15:11:20.202 1015-1015/com.example.rxretrytest E/TEST: getting just
    2020-02-25 15:11:20.263 1015-1015/com.example.rxretrytest E/TEST: OnSubscribe
    2020-02-25 15:11:20.264 1015-1015/com.example.rxretrytest E/TEST: OnNext
    2020-02-25 15:11:20.264 1015-1015/com.example.rxretrytest E/TEST: OnSubscribe
    2020-02-25 15:11:20.265 1015-1015/com.example.rxretrytest E/TEST: OnNext