Because WhatsApp uses your phone book as the only way to interact with its contact list. You can't add someone to directly to your WhatsApp contact list.
It could probably access it less often by only sending deltas, but that would mean their servers would have to store your whole phone book. I don't think that's any better from a privacy perspective.
Of course Facebook Messenger doesn't do the same, it has its own contact list coming from Facebook.
Yeah, but roughly every 30 seconds is a bit too much to access... it's one thing to do so while actively using the application... it's another to run these queries all the time, and that is simply ridiculous.
Pure speculation. How do you know? It could be just as well that Whatsapp queries contacts one by one at the moment they are supposed to show up on the screen.
That way you could easily have 150 times (depending on the size of your contact list) your database accessed by scrolling once through your complete contact list.
Or the author is one of the few that has 1k contacts. In this case basically any operation that requires querying every single contact every now and then could cause this.
Also: the thumbnails you see of your contacts are accessed via URIs - could be that Android increases the counter every time you show a thumbnail of a contact. (it is part of your contacts information)
Wouldn't even call it a programmer error. Someone probably just implemented a getContacts() function that gets called often in the background without saving the data in a local database or caching - and why would you do anything other than this for very marginal performance benefits, a rise in complexity, and possible data sync issues?
Another app might access your contacts rarely but store them on their server (Facebook!?). I definitely prefer the previous scenario.
Plus, I would imagine that the contacts list is going to be the most efficient way to store and retrieve that data. It's in a database, just like anyone else's is, right?
Not to snark, but how do you know this? Do you know what actions increment the "This app accessed the contacts list" counter, and how many of those actions a comparable IM/telephony app executes? :)
It could probably access it less often by only sending deltas, but that would mean their servers would have to store your whole phone book. I don't think that's any better from a privacy perspective.
Of course Facebook Messenger doesn't do the same, it has its own contact list coming from Facebook.