RxJava2 рдореЗрдВ рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдпрд╛ рдХреНрдпреЛрдВ RxJava рдЖрд╡реЗрджрди рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рднрд▓реЗ рд╣реА onError рд▓рд╛рдЧреВ рд╣реЛ

рд▓реЗрдЦ RxJava2 рд╕рдВрд╕реНрдХрд░рдг 2.0.6 рдФрд░ рдмрд╛рдж рдореЗрдВ UndeliverableException рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдХреЛрдИ рдЯрдХрд░рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЙрд╕рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ - рдореИрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ RxJava1 рд╕реЗ RxJava1 рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рдж production рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдореВрд▓ 28 рджрд┐рд╕рдВрдмрд░, 2017 рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рджреЗрд░ рд╕реЗ рдХрднреА рднреА рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЬрдм рд╣рдо RxJava рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд╕рднреА рдЕрдЪреНрдЫреЗ рдбреЗрд╡рд▓рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ onError рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ RxJava ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЦреБрдж рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╕реЗ рдмрдЪрд╛рдпрд╛ рд╣реИ, рд╣реИ рдирд╛?

рдирд╣реАрдВ, рд╕рдЪ рдирд╣реАрдВ рд╣реИред

рдиреАрдЪреЗ рд╣рдо рдРрд╕реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ RxJava рдЬрд┐рдирдореЗрдВ RxJava рдХрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди RxJava рд╣реЛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА onError рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

RxJava рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░


RxJava рдмреЗрд╕ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ RxJava рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЬреЛ рдЧреНрд░рд╛рд╣рдХ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЗрд╕реЗ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
2.0.6 рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
2.x рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЦреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдХрдореА рд╣реИред рдХрднреА-рдХрднреА рд╕реНрд░реЛрдд рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрдиреБрдХреНрд░рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рдХрд╣реАрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ RxJavaPlugins.onError рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдпрджрд┐ RxJava рдореЗрдВ рдПрдХ рдореВрд▓ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣рдорд╕реЗ рдЫрд┐рдкреА рд╣реЛрдВрдЧреА рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛрдб рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдВрдзреЗрд░реЗ рдореЗрдВ рд╣реЛрдВрдЧреЗред

рд╕рдВрд╕реНрдХрд░рдг 2.0.6 рд╕рд╛рде рд╢реБрд░реВ, RxJavaPlugins.onError рд╣реЛрд╢рд┐рдпрд╛рд░ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА / рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреАред "рдмрдЧ" рдХреА рд╢реНрд░реЗрдгреА рдХреЗ рд▓рд┐рдП рд╕реМрдВрдкреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдмрд╛рдХреА UndeliverableException рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдмреБрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк рдпрд╣ рд╕рдм рддрд░реНрдХ рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ( onError рдФрд░ isBug )ред

RxJava рдореЗрдВ рдореБрдЦреНрдп рдЧрд▓рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ newbies рд╣реИ OnErrorNotImplementedException ред рдпрд╣ рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм onError рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдореЗрдВ onError рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП RxJava рдПрдХ "рдмрдЧ" рд╣реИ рдФрд░ рдПрдХ UndeliverableException рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред

UndeliverableException


рдЪреВрдВрдХрд┐ "рдмрдЧ" рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдареАрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрди рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред RxJava рдПрдХ RxJava рдореЗрдВ рдЬреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рд╡реЗ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЛ onError рдХреНрдпреЛрдВ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд░реЛрдд рдФрд░ рдЧреНрд░рд╛рд╣рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╣рдо рдпрд╣ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рд╕рдХреНрд░рд┐рдп рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрддреА рд╣реИ, рдЬрдм рддреНрд░реБрдЯрд┐ рд╡рд┐рддрд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде zipWith ()


рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдПрдХ UndeliverableException рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ zipWith ред

 val observable1 = Observable.error<Int>(Exception()) val observable2 = Observable.error<Int>(Exception()) val zipper = BiFunction<Int, Int, String> { one, two -> "$one - $two" } observable1.zipWith(observable2, zipper) .subscribe( { System.out.println(it) }, { it.printStackTrace() } ) 

рд╣рдо рджреЛ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рд╣рдо рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ onError рдХреЛ рджреЛ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ Reactive streams рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХрд░рддрд╛ рд╣реИ ред
рдЯрд░реНрдорд┐рдирд▓ рдЗрд╡реЗрдВрдЯ ( onError , onCompelete ) рдкрд░ рд╕рд┐рдВрдЧрд▓ рдХреЙрд▓ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреЛрдИ рдФрд░ рдХреЙрд▓ рди рдХреА рдЬрд╛рдП

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ onError рд╕рд┐рдВрдЧрд▓ рдХреЙрд▓ рдХреЗ рд╕рд╛рде onError рджреВрд╕рд░реА рдХреЙрд▓ рдЕрдм рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд╕реНрд░реЛрдд рдореЗрдВ рджреВрд╕рд░реА рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдЗрд╕реЗ RxJavaPlugins.onError рддрдХ RxJavaPlugins.onError ред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓реНрд╕ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП zip рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЛ Retrofit рдХреЙрд▓ Observable рд▓реМрдЯрд╛рддреЗ рд╣реБрдП)ред рдпрджрд┐ рджреЛрдиреЛрдВ рдХреЙрд▓ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ), рддреЛ рджреЛрдиреЛрдВ рд╕реНрд░реЛрдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг onError , рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ onError рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ onError , рдФрд░ рджреВрд╕рд░рд╛ рдЖрдзрд╛рд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ ( RxJavaPlugins.onError ) рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ ConnectableObservable рдЙрджрд╛рд╣рд░рдг


ConnectableObservable рднреА рдПрдХ UndeliverableException рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ ConnectableObservable рд╕рдХреНрд░рд┐рдп рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрдард╛рддрд╛ рд╣реИ, рдмрд╕ connect() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдпрджрд┐ рдХреЛрдИ рдЧреНрд░рд╛рд╣рдХ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ ConnectableObservable рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрдзрд╛рд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рддрдХ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣рд╛рдБ рдПрдХ рдмрд╣реБрдд рд╣реА рдирд┐рд░реНрджреЛрд╖ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ:

 someApi.retrofitCall() //     Retrofit .publish() .connect() 

рдпрджрд┐ someApi.retrofitCall() рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ), рддреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ RxJava рдЖрдзрд╛рд░ рддреНрд░реБрдЯрд┐ RxJava рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХреА RxJava ред

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд▓реНрдкрдирд┐рдХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ ConnectableObservable рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдЬрд╣рд╛рдВ ConnectableObservable рдЕрднреА рднреА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХреЛрдИ рдЧреНрд░рд╛рд╣рдХ рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп autoConnect() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЗрд╕ рдкрд░ рдЖрдпрд╛ рдерд╛ред autoConnect() рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ autoConnect() рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ Activity рдХреЗ onStop рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ onStop , рд▓реЗрдХрд┐рди Activity рдХреЗ рд╡рд┐рдирд╛рд╢ рдХреЗ рдмрд╛рдж рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди onStop рд╕рд╛рде UndeliverableException ред

рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐


рддреЛ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдХрд░реЗрдВ?

рдкрд╣рд▓рд╛ рдЪрд░рдг рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рд╣реИ рдЬреЛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреА рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИрдВред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдк RxJavaPlugins.onError рдХреЛ RxJavaPlugins.onError рдХрд░рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

zipWith рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдПрдХ рдпрд╛ рджреЛрдиреЛрдВ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд▓реЗрдирд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЗ рдмрдЬрд╛рдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП onErrorReturn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

ConnectableObservable рдЙрджрд╛рд╣рд░рдг рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд╣реИ - рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЬрдм рдЖрдк рдЕрдВрддрд┐рдо рдЧреНрд░рд╛рд╣рдХ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк Observable рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджреЗрддреЗ рд╣реИрдВред autoConnect() , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдХрдиреЗрдХреНрд╢рди рд╕рдордп рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ ( рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ )ред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдЖрдзрд╛рд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрдкрдиреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рд╣реИред RxJavaPlugins.setErrorHandler(Consumer<Throwable>) рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреАред рдпрджрд┐ рдпрд╣ рд╡рд╣ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ, рддреЛ рдЖрдк RxJavaPlugins.onError рднреЗрдЬреА рдЧрдИ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдлрд┐рдЯ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ RxJavaPlugins.onError рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕рднреА RxJava рдзрд╛рд░рд╛рдУрдВ рд╕реЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдирд╛ emitter.tryOnError() рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк emitter.tryOnError() рдмрдЬрд╛рдп emitter.tryOnError() рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдзрд┐ рддрднреА рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИ рдЬрдм рдзрд╛рд░рд╛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рд╕рджрд╕реНрдп рд╣реЛрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдиреИрддрд┐рдХ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХрд┐ RxJava рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЖрдк рдмрд╕ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░реНрд╕ рдореЗрдВ onError рдХреЛ рд▓рд╛рдЧреВ onError ред рдЖрдкрдХреЛ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЗрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi422611/


All Articles