Introduce predicate caching as an opt-in setting #5546
Merged
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.
Work towards #5410
Blocked by getodk/javarosa#713For the moment, predicate caching is off by default and can be enabled from "Experimental" settings.
What has been done to verify that this works as intended?
Verified manually.
Why is this the best possible solution? Were any other approaches considered?
Not a lot to discuss here. I introduced a new
FormEntryControllerFactory
component to allow us to isolate building/configuring aFormEntryController
. I expect we'll end up with even more configuration down the line as part of this work, so that should hopefully become an important foundation.How does this change affect users? Describe intentional changes to behavior and behavior that could have accidentally been affected by code changes. In other words, what are the regression risks?
The only change in behaviour we should see is that switching between screens during form entry should now be faster for forms like the example in getodk/javarosa#689. We'll want to discuss some strategies for trying to break the caching introduced here, but for now our plan is to merge without QA to get as many people testing it as possible. As the feature is a beta only opt-in the risk is very limited and we shouldn't see this breaking anything for real projects.
Before submitting this PR, please make sure you have:
./gradlew checkAll
and confirmed all checks still pass OR confirm CircleCI build passes and run./gradlew connectedDebugAndroidTest
locally.