Meilleure pratique pour afficher les contacts Android et les numéros de téléphone

Quelle est la meilleure approche du point de vue de la performance pour afficher un ListView avec les contacts et leurs numéros de téléphone?

  • Utilisez CursorAdapter avec le curseur de contacts et effectuez la requête des numéros de téléphone lorsque bindView est invoqué pour chaque ligne
  • Copiez tous les contacts et numéros de téléphone dans un tableau en mémoire dans un thread d'arrière-plan, puis affichez-les avec un ArrayAdapter.
  • D'autres solutions?

  • Modification de la conception / conception de Spinner Android
  • Ajout de fichiers .aar locaux à ma compilation Gradle
  • Comment détecter les fautes de variables des ressources dans Android Studio (ex: "% 1 $ s")
  • L'image de la caméra sur Bitmap donne lieu à une image dérangée
  • ProcessReleaseResources
  • Firebase + Android - Notifications ChildAdded - Comment obtenir uniquement New Childs?
  • Comment répliquer iOS 7 Blur View dans Android
  • Android: Samsung Galaxy S3 taille d'écran pour la mise en page
  • Ouvrez un URI de contenu de fichier Google Drive après avoir utilisé KitKat Storage Access Framework
  • Comment utiliser le décodage vidéo accéléré par matériel sur Android?
  • Boîte de dialogue d'alerte Android et définissez le bouton positif
  • Utilisation de AutoCompleteTextView avec ArrayAdapter <Objects> au lieu de ArrayAdapter <Strings>
  • 4 Solutions collect form web for “Meilleure pratique pour afficher les contacts Android et les numéros de téléphone”

    À mon avis, une solution de mélange devrait être meilleure. Pourquoi ça? Parce que vous ne le savez pas ou si vous supposons que dans la plupart des contextes, vous ne pouvez pas savoir comment et combien de contacts votre application devra-t-elle énumérer . Un aussi combien de contacts sont stockés dans le téléphone. Si nous connaissons les deux réponses, nous pouvons certainement prendre la solution la plus abordée.

    Je vous suggère donc d'abord d'apporter un nombre fixe de contacts à l'aide d'un tableau dans la mémoire d'un thread d'arrière-plan, par exemple les 20 premiers. Aussi, si vous considérez que votre application effectuera plus d'une requête à ce service … Génial d'utiliser une sorte de mise en cache. La pire approche devrait être d'appeler encore et encore le service des contacts. Ensuite, pour une demande de contact n ° 21, vous pouvez apporter les prochaines 20 et ainsi de suite.

    Ainsi, vous pouvez utiliser les avantages des deux mondes, et minimiser les inconvénients aussi. Toujours dépend de l'application et du contexte dont nous parlons.

    Je pense que cela dépendra de trois facteurs:

    1. De combien de contacts parlons-nous ici?
    2. Combien de temps faut-il pour charger chaque contact? (Par exemple, avez-vous une vue très compliquée qui doit être gonflée ou récupérez-vous des images de contact / etc. qui requiert des E / S réseau?)
    3. Combien de contacts montrent à l'utilisateur à la fois?

    Votre solution serait la plupart des cas, bien que la deuxième solution offre aussi des avantages:

    Solution 1:

    Avantage:

    1. L'affichage tardif de l'inflation dans une «vue au fur et à mesure» peut fonctionner correctement lorsqu'il est assez rapide pour gonfler les vues sans pertes d'interface utilisateur remarquables.

    Désavantage:

    1. Si vos contacts s'associe à beaucoup de données et nécessitent une certaine complication de l'inflation, vous pourriez constater un retard.

    2. Comparaison moins flexible et extensible avec la solution 2. Comme indiqué ci-dessous.

    Solution 2:

    Avantage:

    1. Vous avez le contrôle de toutes les étapes, de sorte que vous pouvez simuler cela aussi facilement que possible, mais en ajoutant des choses plus faciles: recherchez toute la mémoire, faites un tri personnalisé à travers le tableau, etc. ils fonctionnent mieux lorsque vous avez tout interrogé sur un Tableau qui est déjà là. Ou si vous souhaitez effectuer un chargement personnalisé plus tard, ou en ajoutant davantage de données concernant les contacts nécessitant un traitement supplémentaire (par exemple, les E / S réseau), il pourrait être légèrement plus facile que l'adaptateur de curseur.

    Désavantage:

    1. Exécution: ce n'est pas le mode de livre de texte pour le faire. Faire des choses plus personnalisées aura besoin de vous pour gérer tous les threads bien et bien gérer l'apparence initiale. Assurez-vous qu'il s'échelonne.

    Donc oui, selon ce que vous travaillez exactement, choisissez le bon.

    Je pense que http://www.higherpass.com/Android/Tutorials/Working-With-Android-Contacts/ sera une option. Où vous pouvez trouver toutes les installations que vous voulez …

    Je pense que CursorAdapter est la meilleure solution.

    Assurez-vous également de regarder cette vidéo http://www.youtube.com/watch?v=wDBM6wVEO70 Il parle d'optimisations qui, à mon avis, sont nécessaires pour que votre liste se défile en douceur.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.