创建一个RxJava主题,它不会在完成或错误时终止

时间:2017-03-17 03:32:14

标签: rx-java rx-java2

我正在尝试创建一个可以订阅Subject的RxJava 2 Observable,但是当订阅的Observable因错误或完成而终止时不会终止。< / p>

基本上,这将作为一个事件总线,可以订阅其他Observable

这样做的正确方法是什么,避免传播终止并避免泄漏?

2 个答案:

答案 0 :(得分:1)

这可以解决您的问题:https://github.com/JakeWharton/RxRelay/

答案 1 :(得分:0)

您最好的选择我认为它使用的是操作员“继电器”,一旦所有物品都在管道中排出,它就不会取消订阅

public static Dictionary<string, object> ByteToObjectArray(byte[][] bytes)
{
    var dict = new Dictionary<string, object>();
    var formatter = new BinaryFormatter();

    for (int i = 0; i < bytes.Length; i += 2)
    {
        string key = Encoding.UTF8.GetString(bytes[i]);
        // Alternatively
        //string key = Encoding.Unicode.GetString(bytes[i]);

        using (var stream = new MemoryStream(bytes[i + 1]))
        {
            object obj = formatter.Deserialize(stream);

            dict.Add(key, obj);
        }
    }

    return dict;
}

您可以在此处查看更多中继示例https://github.com/politrons/reactive/blob/master/src/test/java/rx/relay/Relay.java