Add API to fuse autodispose rx types and proxy interfaces #376
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.
Right now, AutoDispose will always create anonymous instances of *Proxy interfaces that that call through to underlying custom rx types (e.g. AutoDisposeObservable) that have the custom observer implementations. This was done defensively to prevent introspection and is similar to APIs like
Observable.hide()
, but does come at the cost of an extra allocation + virtual invocations at runtime.We can save this allocation at the cost of the hiding behavior by just making the custom rx types implement their corresponding proxy interface and returning them directly. This is easy in code because they have matching subscribe signatures.
This PR adds a new plugin to control this hiding behavior via
AutoDisposePlugins#setHideProxies()
. The default istrue
, matching current behavior. If set to false, the rx types will be returned directly and unhidden (though casted as the proxy interface). This can be useful for those wanting to squeeze a little bit of extra juice at runtime.