Je suis du développement d'une application où j'ai besoin d'insérer beaucoup d'entrées de Contact. À l'heure actuelle, environ 600 contacts avec un total de 6000 numéros de téléphone. Le plus grand contact a 1800 numéros de téléphone.
État de la situation aujourd'hui est que j'ai créé un Compte personnalisé pour tenir les Contacts, de sorte que l'utilisateur peut choisir d'afficher les contacts dans l'affichage des Contacts.
Mais l'insertion de la des contacts est très lent. - Je insérer les contacts à l'aide ContentResolver.applyBatch. J'ai essayé avec différentes tailles de la ContentProviderOperation liste(100, 200, 400), mais le temps total d'exécution est d'environ. la même. Pour insérer tous les contacts et les numéros prend environ 30 minutes!
La plupart des questions que j'ai trouvé en ce qui concerne lente insertion dans SQlite, apporte des transactions. Mais depuis que j'utilise le ContentResolver.applyBatch-méthode je n'ai pas le contrôle de cette, et je suppose que le ContentResolver s'occupe de la gestion des transactions pour moi.
Donc, ma question: Suis-je en train de faire quelque chose de mal, ou est-ce que je peux faire pour accélérer les choses?
Anders
Edit: @jcwenger: Oh, je vois. Bonne explication!
Alors je vais avoir à insérer dans le raw_contacts table, puis la datatable avec le nom et les numéros. Ce que je vais perdre est la référence de retour à la raw_id que j'utilise dans le applyBatch.
Donc je vais avoir à obtenir toutes les id de la nouvellement inséré raw_contacts lignes à utiliser comme clé étrangère dans la table de données?