A solution would be to modularize and splitting your app in multiple activities.
This allows to (in an extreme case) have a different architecture or tech per module. And you can easily experiment and revert (or keep) the changes when the result isn't what you expected. 2/4