
RxJava рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдЕрдиреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЕрдиреНрдп рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдФрд░ рд╢рд╛рдпрдж рдлрд╝реНрд▓реЛрдПрдмрд▓ рдХреЗред рд╡реЗ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдПрдХрд▓, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреВрд░реНрдгрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдХреНрд╕рд░ рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯрддрд╛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВред
рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЖрдкрдХреЛ RxJava рдореЗрдВ рдореМрдЬреВрдж рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдкрд░ рдПрдХ рдЪреАрдЯ рд╢реАрдЯ рдорд┐рд▓реЗрдЧреАред
рдХрдВрдкреНрд▓реАрдЯреЗрдмрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
рд░рдирдиреЗрдмрд▓ рдХрд╛ рдПрдХ рдЖрд░рдПрдХреНрд╕ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдпрд╣ рдПрдХ рдСрдкрд░реЗрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рд╣рдо рдХреЛрдЯрд▓рд┐рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рджреГрд╢реНрдп рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрд░рдПрдХреНрд╕ рдХреА рджреБрдирд┐рдпрд╛ рд╕реЗ
рдордЬреЗрджрд╛рд░ (рдкреВрд░реНрдг) рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЗрд╕реЗ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдСрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рдФрд░ рдСрдирд░реНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдорд╛рди (рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ # рдЬрд╕реНрдЯ, ...) рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХрд▓ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХреЙрд▓реЗрдмрд▓, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдХреЛрдЯрд▓рд┐рди рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдВрдЧрд▓ рдлрди рд╕рд┐рдВрдЧрд▓ (): рдЯреА {} рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ onSuccess (T) рдФрд░ onError рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХрд▓ рдФрд░ рдкреВрд░реНрдг рдХреЗ рдмреАрдЪ рдПрдХ рдХреНрд░реЙрд╕, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдореВрд▓реНрдп, рдХреЛрдИ рдореВрд▓реНрдп рдФрд░ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдордЬрд╝рд╛ рдордЬреЗрджрд╛рд░ рд╣реИ (): рдЯреА? {, рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЕрд╢рдХреНрдд рд▓реМрдЯ рдЖрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ onSuccess (T), onComplete, рдФрд░ onError рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ onSuccess (T) рдФрд░ onComplete рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдирдиреНрдп рд╣реИрдВред рдпрд╛рдиреА рдкрд╣рд▓реА рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рджреВрд╕рд░реЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЗрд╕рдХреА рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдХреЗ рдХрд╛рд░рдг,
рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рд╕рдмрд╕реЗ рдЖрдо рд╕реНрд░реЛрдд рд╣реИред рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдореЗрдВ рдПрдХ рдЦрд╛рдореА рд╣реИ - рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдмреИрдХрдкреЗрдЪрд░ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдЗрд╕рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ onNext (T), onError рдФрд░ onComplete рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдмреИрдХрдкреНрд░реЗрд╢рд░ - рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЬрдм рдирдИ рдШрдЯрдирд╛рдПрдБ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдЖрддреА рд╣реИрдВ, рдЬрдмрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдордп рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдмрдлрд░ рдореЗрдВ рдЬрдорд╛ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ OutOfMemoryError рдЬреИрд╕реА рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
ConnectableObservable -
рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХрд╛ рдПрдХ рдЧрд░реНрдо рд╕рдВрд╕реНрдХрд░рдгред рд╕рднреА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рдордп рдШрдЯрдирд╛рдУрдВ рдХреА рдЕрдкрдиреА рдзрд╛рд░рд╛ рдЬрд╛рд░реА рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдЖрджрдореА рдХреЛ рдирд╣реАрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ConnectableObservable рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХрдИ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдпрддрд╛ рдкрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд┐рдП рдмрд┐рдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рдзрд╛рд░рд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХреЗрдВред рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдирд┐рдкреЗрдЯ рджреВрдВрдЧрд╛:
val observable = Observable.fromCallable { Log.d("RxLogs", "observable fromCallable executed") Thread.sleep(1000) }.subscribeOn(Schedulers.computation()) observable.subscribe() observable.subscribe() observable.subscribe() observable.subscribe()
рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╣реЛрдЧрд╛:
рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп
рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп
рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп
рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп
val connectedObservable = Observable.fromCallable { Log.d("RxLogs", "connectedObservable fromCallable executed") Thread.sleep(1000) }.subscribeOn(Schedulers.computation()) .publish() connectedObservable.subscribe() connectedObservable.subscribe() connectedObservable.subscribe() connectedObservable.subscribe() connectedObservable.connect()
рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ: рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп
рдлрд╝реНрд▓реЛрдПрдмрд▓ - рдПрдХ рд╕реНрд░реЛрдд рдЬреЛ
рдмреИрдХрдкреЗрдЪрд░ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЖрдкрдХреЛ 10,000 рд╕реЗ рдЕрдзрд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЬрд▓реНрджреА рд╕реЗ рдШрдЯрд┐рдд рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред
рдмрд╛рдж рдореЗрдВ ConnectableObservable рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЦреЛрд▓рдиреЗ, рдПрдХ ConnectableFlowable рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдИрд╡реЗрдВрдЯ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, рдХреЛрдИ рднреА рд╡рд┐рд╖рдп рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╡рд┐рд╖рдп - рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рдЬреЛ рдПрдХ рд╕реНрд░реЛрдд рдФрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ, рдЬреЛ рдЗрд╕реЗ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рд╣рд░ рдХреА рдУрд░ рджреЗрдЧрд╛ рдФрд░ рдЕрдВрджрд░ рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ред рдЕрдЧрд▓рд╛, рд╣рдо рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗрдВрдЧреЗред
AsyncSubject / AsyncProcessor рдЕрдВрддрд┐рдо рдИрд╡реЗрдВрдЯ рдХреЛ рддрдм рддрдХ рд░рдЦрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдереНрд░реЗрдб рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреЛрдИ рдИрд╡реЗрдВрдЯ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
PublishSubject / PublishProcessor рдЖрдЧреЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯрд░реНрдорд┐рдирд▓ рд╕рд┐рдЧреНрдирд▓ рдЖрдиреЗ рддрдХ
рдЖрдЧреЗ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдзрд╛рд░рд╛ рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рдж, рдпрд╣ рдЙрдЪрд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
BehaviorSubject / BehaviorProcessor рдкрдмреНрд▓рд┐рд╢рд╕рдмреНрдпреВрдЬ / рдкрдмреНрд▓рд┐рд╢рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рджрд╕реНрдпрддрд╛ рдкрд░ рдпрд╣ рдЕрдВрддрд┐рдо рдШрдЯрдирд╛, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рдФрд░ рдпрджрд┐ Subject рдиреЗ рдЯрд░реНрдорд┐рдирд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред
ReplaySubject / ReplayProcessor - рд╕реНрдЯреЗрд░реЙрдпрдб рдкрд░ BehaviourSubject / BehaviorProcessorред рдпрд╣ рдПрдХ рдЕрдВрддрд┐рдо рдШрдЯрдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рддрдирд╛ рдЖрддреНрдорд╛ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдкреВрд░реНрдг ReplaySubject рдпрд╛ ReplayProcessor рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рд╕рдВрдЪрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, ReplaySubject.createWithSize (1) рдФрд░ BehaviourSubject.create () рдЯрд░реНрдорд┐рдирд▓ рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рдж рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рджреМрд░рд╛рди, рдкрд╣рд▓рд╛ рдЕрдВрддрд┐рдо рдИрд╡реЗрдВрдЯ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рд░рд┐рдкреНрд▓реЗрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рднреА рд╕рд╣реА рд╣реИред
TotaltableSubject ,
MightSubject рдФрд░
SingleSubject ,
PublishSubject рдХреЗ рд╕рдорд╛рди рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдХреНрд░рдорд╢рдГ рдХрдореНрдкреЛрдЬрд╝рд┐рдмрд▓, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рд┐рдВрдЧрд▓ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
UnicastSubject / UnicastProcessor рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ ReplaySubject рд╣реИ рдЬреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВред рдкреБрди: рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рдЕрд╡реИрдз рддрд░реАрдХреЗ рд╕реЗ рдлреЗрдВрдХрддрд╛ рд╣реИред

рдпрд╛рдиреА рдЕрдЧрд▓рд╛ рд╕реНрдирд┐рдкреЗрдЯ
val subject = UnicastSubject.create<String>(3) repeat(3) { subject.onNext(it.toString()) } subject.onComplete() subject.subscribe({ Log.d("RxLogs", it) }, { }, { Log.d("RxLogs", "complete") })
рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рд╣реЛрдЧрд╛
0
1
2
рдкреВрд░рд╛
рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдХ рдЫреЛрдЯреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдкрдмреНрд▓рд┐рд╢рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реА рдзрд╛рд░рд╛ рдХреЗ рд▓рд┐рдП рдмреИрдХрд╕реНрдкреЗрд╕ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрдкрдХреЛ рдмрдлрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреВрд░реНрд╡-рдХреНрд╡реЗрд░реА рдХрд░реЗрдЧрд╛ред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдореЗрдВ, рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ 2 рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд╣ рддреБрд░рдВрдд рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдкрд╣рд▓рд╛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдЗрд╕рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рдмрдлрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рддреБрд░рдВрдд рдирдИ рдШрдЯрдирд╛рдУрдВ рд╕реЗ рднрд░ рдЬрд╛рддрд╛ рд╣реИред рдЯрд░реНрдорд┐рдирд▓ рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж, рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрдиреЗ рднрдВрдбрд╛рд░рдг рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рддреБрд░рдВрдд рд╕реНрдЯреНрд░реАрдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рд╕реВрдЪрдирд╛ рдорд┐рд▓рддреА рд╣реИред
