Recuperando más de 1000 contactos usando ngCordova en AngularJS

Estoy desarrollando una aplicación en ionic framework que muestra todos los contactos del dispositivo al usuario final y da opción para la selección de contactos. Estoy usando el module $ cordovaContacts de ngCordova para search contactos.

Este es el código de service que obtiene contactos del dispositivo.

angular.module('starter.services').factory('ContactManager', function($cordovaContacts, $ionicLoading){ return { getContacts: function() { $ionicLoading.show({ template: "<div class='ion-ios7-reloading'></div>"}); var options = {}; options.filter = ""; options.multiple = true; options.fields = ['displayName', 'name', 'phoneNumbers', 'emails']; //get the phone contacts return $cordovaContacts.find(options); } } }); 

A continuación se muestra el código del controller que asigna contactos a la variable $ scope.contacts

 angular.module('starter.ctrls').controller('ShareCtrl', function($scope, ContactManager, $stateParams) { $scope.contacts = []; ContactManager.getContacts().then(function(_result){ alert("CONTACTS FETCHED: Now rendering in Template"); $scope.contacts = _result; }, function(_error){ alert("Error: " + _error); }); }); 

Funciona bien para 100-400 contactos. Pero para los dispositivos con alnetworkingedor de 1000 contactos, se necesita mucho time para get contactos del complemento (la alerta de CONTACTS FETCHED en el controller se muestra después de 2-3 minutos). Después de get los contactos del complemento, nuevamente toma 2-3 minutos para representarse en la interfaz de usuario (usando ng-repeat) y la mayoría de las veces la aplicación se cuelga.

También busqué la pagination al search contactos, pero no pude encontrar ninguna opción para search la página de contactos en la documentation de ngCordova.
A partir de ahora estoy probando en Android y la aplicación se cuelga en caso de que el recuento de contactos sea de alnetworkingedor de 1000.
¿Cómo puedo mejorar su performance? Soy un novato en angular e iónico.

Recomendaría que en lugar de cargar 100-400 contactos en una sola pantalla muestre 100 contactos mientras el usuario se desplaza hacia abajo, puede cargar los siguientes 100 contactos. Para lograr esto, puedes usar este complemento. http://binarymuse.github.io/ngInfiniteScroll/

Si están en los contactos de solo lectura, puede usar el complemento "BindOnce" que mejorará la unión del scope una vez y mantendrá su browser encendido. https://github.com/Pasvaz/bindonce

Espero que esto ayude.