As everyone has complained before we are still facing very noticeable performance issues with Android. Transitions, Scrolling, Modal popups everything feels so sluggish.
So far I have tried below things,
It is per se android problem. I have seen native android apps stutter also. Even facebook’s native android app is not as smooth as ios version.
The performance of animations etc. depend on the hardware of the phone(s). You cannot have same experience across all the devices unlike ios. Adding crosswalk is not a magic pill as crosswalk also depends on the hardware of the phone for animations etc. If you have a $50 phone and a $300 phone, both might have same OS version but their hardware will differ significantly and hence the performance. I have a Lenovo A6000 phone and facebook’s native android app has crashed or hanged at least 5 times in last one week. It is device’s issue.
This is a tradeoff for cross platform app with less time to develop. If performance in animation etc. is an issue, you are better off developing native app.
use ng-if instead of ng-show and ng-hide, if possible
watch out memory usage (don’t keep variables references you will never use, keep bigger objects in local contexts where they can be garbage collected, listen to $ionicView.leave event and destroy things you’ve created before)
When in doubt, it’s ngAnimate’s fault. I’ve developed two angular apps, one web and one ionic, and both of them when profiled the CPU typically spends 95% of the time doing unnecessary ngAnimate css computations, generating callbacks/promises/timeouts, etc.
Try adding this in your config block (inject $animateProvider first, obviously). It will make it so you need to have an ‘angular-animated’ class applied to an element for ngAnimate to do its thing, turning it into an opt-in system instead of constantly analyzing every DOM change.
This one change gave me iOS-like performance on my ionic app when built for android. It might cause problems with ion-nav-view’s transitions, I haven’t tested it with ion-nav-view because I implemented my own navigation solution due to ion-nav-view’s completely broken support for child states/views