2017-07-03 1 views
0

Une seule requête à la table Groupes prend environ 5 minutes malgré le fait que la table ne comporte que 15 lignes et malgré la spécification d'une projection de seulement 3 colonnes.L'interrogation de la table des groupes Android est très lente

Y at-il une raison pour que cela soit si lent? Est-ce que Android bloque l'accès à cette table pendant que d'autres applications y accèdent, par exemple? Existe-t-il un meilleur moyen d'obtenir des informations sur les groupes?

Voici un exemple d'une section de code qui prend plus de 5 minutes pour exécuter (notez que là, je ne l'ai pas inclus une requête ou une projection, mais il est pas plus lent que quand je fais):

ContentResolver resolver = context.getContentResolver(); 
resolver.query(android.provider.ContactsContract.Groups.CONTENT_URI, 
       null, 
       null, 
       null, 
       null); 
+0

Je n'ai pas vu une requête de groupe si lente, cela devrait prendre moins d'une seconde. essayez avec la sélection 'Groups.DELETED +" = 0 ET "+ Groups.GROUP_VISIBLE +" = 1 "', voir si cela aide. – marmor

+0

comment comptez-vous le temps que la requête a pris? attendez-vous que les résultats s'affichent à l'écran ou effectuez-vous des mesures dans le journal? Je suggère d'ajouter un message de journal avant et après la ligne de requête et voir le diff dans les horodateurs – marmor

+0

Je mesure déjà le temps en regardant les horodatages des journaux immédiatement avant et après. J'ai essayé une sélection encore plus étroite - en sélectionnant des valeurs spécifiques de 'Groups.ACCOUNT_TYPE' et' Groups.ACCOUNT_NAME' - mais c'est aussi lent. – UtterlyConfused

Répondre

0

(Tourner le commentaire dans une réponse appropriée)

requête similaire dans nos rapports d'applications production calendrier de ~ 10-20ms. Peut-être que vous avez une table Groups corrompue.

Je suggère d'essayer un autre périphérique, en utilisant un compte de contacts différents de préférence.