How would a normal user have 5000+ contacts?


I have maybe 50 at the most.



On Tuesday, November 13, 2012 6:34:25 PM UTC-6, prestona wrote:
>
> I'm developing an application where a user can initially sync all his 
> contacts with a desktop application OTA.  This is done through a web 
> service call that grabs a set of 100 contacts from the server, downloads 
> and parses the information, inserts the contacts into the Android Contact 
> DB, acknowledges receipt of these contacts, and then repeats the previous 
> steps with the next set of 100 contacts until the sync is complete.  This 
> process works well when a user has contacts on the order or 1000-2000, but 
> a typical user of this application can easily have 5000-6000 contacts (with 
> power users having upwards of 10000+) in which case things take far longer 
> than I'd like.  For example, a sample set of approximately 5300 contacts 
> can take about 13.5 minutes to complete.  Not bad, but I'd like it to be at 
> least as efficient as iOS which runs about 8 minutes for the same data set 
> if possible.
>
> I've logged the time it takes for each step and, unsurprisingly, the 
> bottleneck appears to be with inserting the data into the Android contract 
> DB.  After scouring the web I've found little help with regards to 
> inserting thousands of contacts, but what I have found seems to fall into 
> these three groups:
>
> 1) ContentProviderOperation -- The Google recommended way which gave me my 
> baseline of 13.5 minutes for 5300 contacts.
>
> 2) Bulk Inserts -- I read that buildInsert tends to be more efficient than 
> applyBatch, but when I tried to implement this myself it actually took 25 
> minutes for the same 5300 contacts.  I have a feeling a lot of this is due 
> to the fact that I need to insert the RawContact information and then save 
> the resulting URI for use in creating the ContactsContract.Data for the 
> bulkInsert which comes more naturally via the backValueReference in the 
> ContentProviderOperation.  Additionally, I looked at the source code and I 
> don't get the feeling that bulkInsert is terribly efficient. 
>
> 3) Creating an optimized bulk insert using the DatabaseUtils.InsertHelper 
> and transactions -- Unfortunately, this seems geared towards those people 
> who created their own content provider because you need access to the 
> underlying DB as an instance variable and I've yet to see how that could be 
> done with the native contacts DB.
>
> Does anyone have any experience with inserting 5000+ contacts or any 
> possible ideas I could look into to help reduce my time?  Or should I 
> consider the ContentProviderOperation to be as optimized as it's going to 
> get?
>
> Thanks.
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to