Fix crash(es) caused by disposed Rx observables. #2668
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
After Rx Observables are disposed, they can still produce errors, and if they are detached from an Observer when an error happens, the error goes to a "global" error handler defined in Rx. By default, this error handler does nothing, and allows the error to be unhandled, thereby causing a crash.
(I'm guessing you've seen these kinds of crashes -- it might happen right after you back out of an Activity, or anytime you dispose an observable that is still performing a network call.)
This fixes these crashes by providing an "empty" global Rx error handler. This means that any time you subscribe to an Observable, you should provide an
onError
handler (assuming you want to handle errors from it). And for Observables where you don't care about errors, they will simply fall through without crashing.